Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Condizione su un array

Buonasera, ho necessità di scandire un array, ho utilizzato un ciclo for per scandire ogni elemento dell'array. Il mio vi deve fare un confronto con un dato numerico, se l'elemento dell'array è > di questo numero mi deve dare in uscita proprio proprio l'elemento dell'array altrimenti, se la condizione è falsa non deve fare nulla. come posso fare? avevo pensato ad un case all'interno di un for ma ho problemi a dirgli che non deve fare niente se la condizione non è rispettata

0 Kudos
Messaggio 1 di 7
2.418Visualizzazioni

La tua descrizione non è proprio precisa... che vuol dire "non fare nulla?".

Comunque, a quanto ho capito, devi generare un array che contiene solo gli elementi sopra soglia, giusto?

Allora prova a considerare un terminale conditional autoindexing (fai right click sul terminale di uscita per vedere le modalità del terminale).

A meno che il tuo LabVIEW non sia troppo anziano. In questo caso, dovresti costruire l'array con Build Array, condizionato però al superamento della soglia. L'array prodotto dovrebbe essere memorizzato in un shift register in modo da averlo a disposizione per la successiva iterazione.

Spero di essere stato di aiuto.

 

P.S.: che stadio è?

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Messaggio 2 di 7
2.366Visualizzazioni

grazie per la risosta, mi scuso per la poca chiarezza. Come da immagine caricata devo fare il confronto tra gli elementi di un array, ed una soglia. In ingresso al ciclo for collego l'array e la soglia, faccio il confronto mediante il case ed in uscita vorrei ottenere appunto, i soli elementi superiori alla soglia, se tuttavia non ci sono elementi superiori a tale soglia il programma non deve agire. per come avevo impostato io il programma se la condizione true è verificata mi restituisce gli elementi maggiori, non so però come fare per la condizione false, che in questo caso non mi deve restituire nulla.

L'autoindexing lo prende di default appena collego i vari elementi. per fare come da lei suggerito dovrei eliminare completamente la case structure e creare la condizione di superamento sul ciclo for? mi sfugge quest'ultima parte 

Mi scuso ma sono ancora alle primissime armi

 

 

0 Kudos
Messaggio 3 di 7
2.359Visualizzazioni

Fossi in te controllerei l'immagine caricata...

Perchè non alleghi il vi direttamente? Però se hai LV2020 dovresti prima salvarlo per una versione precedente. Il mio ultimo è LV2019.

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Messaggio 4 di 7
2.350Visualizzazioni

Grazie per la pazienza, ho caricato il mio vi

come è possibile notare scompongo il segnale acquisito perchè mi necessita la sola ampiezza e faccio il confronto come già detto con un certo numero che imposto a piacimento, a valle devo calcolare max/min solo se l'ampiezza ha superato la soglia. non so se risulta più chiaro ora 

0 Kudos
Messaggio 5 di 7
2.346Visualizzazioni

Come ti dicevo, il metodo più veloce è fare right click sul terminale autoindexing, scegliere Tunnel Mode e attivare Conditional. La condizione da collegare è ovviamente la stessa della struttura case - che non ti serve più.

Tieni presente però che l'array in uscita potrebbe essere vuoto, nel quale caso, Max Value e Min Value non hanno più senso. Questo caso va trattato esplicitamente, usando la funzione Empty Array?

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Messaggio 6 di 7
2.333Visualizzazioni

Era proprio questo step che mi mancava, non riuscivo a trovare "conditional" perchè facevo right click sul for e non sul tunnel di uscita, di conseguenza avevo optato per una struttura case.

grazie per le dritte, molto gentile e paziente

0 Kudos
Messaggio 7 di 7
2.329Visualizzazioni