Vettore che restituisca valori maggiori uguali

di il
2 risposte

Vettore che restituisca valori maggiori uguali

Buona sera, sto riscontrando il seguente problema su matlab, ho un vettore V nx1 di cui mi interessano i valori maggiori di un certo scalare b, io ho impostato il tutto con il comando if, definendo n pari alla length di V, ho scritto le seguenti righe
i=1:n
if V(i,1)>b
B(i,1)=V(i,1)
else
B(i,1)=0
end
dove B è il vettore che desiderei in output con tutti i valori superiori a b, solo che in output ottengo solamente un vettore nx1 di 0, inoltre a che ci sono vi chiedo indicazioni su come procedere successivamente, in quanto poi dovrei chiedere a matlab di cercarmi tutti i valori massimi contenuti in intervalli di lunghezza d delimitati dal valore d, per spiegarmi meglio sto studiando un fenomento che si evolve nel tempo, e mi interessa considerare eventi che durino almeno 24 ore e per cui la variabile abbia assunto durante tutto l'arco temporale un valore superiore o uguale a b

2 Risposte

  • Re: Vettore che restituisca valori maggiori uguali

    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.
  • Re: Vettore che restituisca valori maggiori uguali

    Allora intanto ti ringrazio per la risposta precedente. Detto questo provo a spiegarmi meglio, ho un vettore nx1, in questo vettori ho riportate le velocità del vento registrate in n ore consecutive, adesso mi serve definire, chiamiamoli "eventi estremi" che abbiano una durata fissata, in primo tentativo fisso 24 ore, questi elementi estremi vengono individuati dal tempo t0 in cui la velocità assume il valore soglia b, se a partire da t0 per i successivi , almeno, 24 valori (quindi un evento di durata minima di 24 ore) quindi t0+24 i valori delle velocità sono maggiori uguali al valore b ho il mio evento estremo, se a partire da t0 invece i valori delle velocità si protraggono per un tempo >24ore, ad esempio 36 ore, allora l'intervallo da prendere è t0+36. se invece dopo 10 ore il valore scende al di sotto di b, allora scarterò questo intervallo e ne cercherò uno nuovo, spero di essere stato esaustivo
Devi accedere o registrarti per scrivere nel forum
2 risposte