Ho un set di dati di 1 secondo di 86400 valori di velocità del vento (WS) in Matlab e ho bisogno di assistenza nel filtrarlo. Richiede un certo livello di intelligenza.Rompicapo: algoritmo di filtraggio con medie mobili
Se il WS media superiore:
- 25m/s in un tempo 600s intervallo
- 28m/s in un intervallo 30s tempo
- 30m/s in 3 s intervallo di tempo
Se uno di questi parametri viene soddisfatto, il WS viene considerato 'non valido' fino a quando il WS medio rimane inferiore a 22 m/s in un intervallo di 300 s.
Ecco quello che ho per il secondo requisito di 600. Faccio una media mobile di 600 e 300 secondi sui dati contenuti in "set di dati". Filtro gli intervalli dalla prima apparizione di una media di 25 m/s alla successiva comparsa di un valore inferiore a 22 m/s come 'NaN'. Dopo il filtraggio, farò un'altra media di 600 secondi, e gli intervalli con valori segnalati con un NaN saranno lasciati a un NaN.
cioè
Rolling600avg(:,1) = tsmovavg(dataset(:,2), 's', 600, 1);
Rolling300avg(:,1) = tsmovavg(dataset(:,2), 's', 300, 1);
a = find(Rolling600avg(:,2)>25)
b = find(Rolling300avg(:,2)<22)
dataset(a:b(a:find(b==1)),2)==NaN; %?? Not sure
Questo sta per richiedere un uso intelligente di 'trovare' e un po 'indicizzazione. Qualcuno potrebbe aiutarmi? I filtri da 28 m/se 30 m/s seguiranno lo stesso metodo.
Non che sia eccessivamente rilevante per risolvere il problema, ma suppongo che con "WS" intendi la velocità del vento? – Mac
Sì, grazie. L'ho aggiunto. – user1854628
cosa stai cercando di fare con quest'ultima affermazione? – jerad