Per quanto riguarda la prima domanda:
[*] l'espressione
V(i,1)>b ritorna un vettore di tipo "logical" con i valori 1 - 0 a seconda che l'i-esimo valore del vettore V sia o non sia maggiore del valore "b"
[*] se nel vettore V c'è almeno un valore minore o uguale alla soglia "b", ci sarà almeno un corrispondente valore "0" tra quelli ritornati dall'espressione
V(i,1)>b
[*] in presenza di anche un solo valore "0", la condizione
if V(i,1)>b non sarà verificata e, di conseguenza, verrà eseguita la sezione "else"
questo spiega perché ottieni un vettore di "0" come output
Per risolvere il problema, è sufficiente scrivere:
B=V(V>b)
In questo modo:
[*]
V>b ritorna un vettore di tipo "logical"
[*]
V(V>b) identifica i valori del vettore "V" presenti nelle locazioni di memoria corrispondenti ai valori "1" ritornati dalla verifica della condizione
v>b).
Questi valori sono quindi assegnati al vettore "B"
La seconda domanda non è chiara.
Se vuoi identificare i valori massimi (picchi) di un vettore, puoi usare la funzione
findpeaks
Se vuoi esaminare solo una parte del vettore di input, puoi specificarne i limiti della chiamata alla funzione stessa.
Se vuoi trovare i picchi che abbiano un valore maggiore od uguale ad una data soglia, pupi specificare il parametro
MinPeakHeight nella chiamata alla funzione.
Per ulteriori possibilità, puoi fare riferimento alla guida in linea.