[MATLAB] Filtraggio dati

rannock
Buonasera
vi espongo il mio problema: ho un vettore che rappresenta una traiettoria, questo segnale è un po' rumoroso e l'ho filtrato usando la funzione filter. il problema è che la mia traiettoria parte da un valore iniziale intorno a 420 ma, una volta filtrato, il valore di partenza diventa 0.. il codice usato è:
b=ones(1,10)/10;
zfil = filter(b,1,z);

dove z è il vettore contenente la traiettoria
posto i plot per chiarire meglio, il primo rappresenta z, il secondo z filtrato



penso il problema sia dovuto al fatto che per i primi dieci punti la finestra del filtro pesca punti precedenti che non esistono e magari sono impostati a zero di default. c'è un modo per evitare che succeda ciò? magari bisogna fornire ulteriori indicazioni alla funzione "filter", ma guardando l'help non mi risulta. La soluzione più ovvia sarebbe quella di eliminare i primi 10 punti dal segnale filtrato ma vorrei evitare, in questo caso non mi darebbe problemi ma ho altre traiettorie che non partono "piatte".
grazie!

Risposte
rannock
ho dovuto installare la Signal Processing Toolbox perchè non avevo la funzione filtfilt, ora funziona bene
grazie!!

elgiovo
Una funzione alternativa che ti può essere utile è smooth(y,n), che effettua medie mobili di y su n campioni

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.