Filtraggio dei dati
Equazione alle differenze del filtro
I filtri sono tecniche di elaborazione dei dati che consentono di uniformare le fluttuazioni ad alta frequenza nei dati o di rimuovere le tendenze periodiche di una frequenza specifica dai dati. In MATLAB®, la funzione filter filtra un vettore di dati x secondo la seguente equazione alle differenze, che descrive un filtro a linea di ritardo con prese intermedie.
In questa equazione, a e b sono vettori dei coefficienti del filtro, Na è l'ordine del filtro di feedback e Nb è l'ordine del filtro di feed-forward. n è l'indice dell'elemento attuale di x. L'output y(n) è una combinazione lineare degli elementi attuali e precedenti di x e y.
La funzione filter utilizza i vettori dei coefficienti specificati a e b per filtrare i dati di input x. Per maggiori informazioni sulle equazioni alle differenze che descrivono i filtri, vedere [1].
Filtro a media mobile dei dati sul traffico
La funzione filter è un modo per implementare un filtro a media mobile, che è una tecnica comune di uniformizzazione dei dati.
La seguente equazione alle differenze descrive un filtro che calcola la media dei dati dipendenti dal tempo rispetto all'ora attuale e alle tre ore precedenti.
Importare i dati che descrivono il flusso di traffico nel tempo e assegnare la prima colonna dei conteggi dei veicoli al vettore x.
load count.dat
x = count(:,1);Creare i vettori dei coefficienti del filtro.
a = 1; b = [1/4 1/4 1/4 1/4];
Calcolare la media mobile a 4 ore dei dati e tracciare sia i dati originali che quelli filtrati.
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')

Modifica dell'ampiezza dei dati
Questo esempio mostra come modificare l'ampiezza di un vettore di dati applicando una funzione di trasferimento.
Nell'elaborazione di segnali digitali, i filtri sono spesso rappresentati da una funzione di trasferimento. La trasformata Z dell'equazione alle differenze
è la seguente funzione di trasferimento.
Utilizzare la funzione di trasferimento
per modificare l'ampiezza dei dati in count.dat.
Caricare i dati e assegnare la prima colonna al vettore x.
load count.dat
x = count(:,1);Creare i vettori dei coefficienti del filtro in base alla funzione di trasferimento .
a = [1 0.2]; b = [2 3];
Calcolare i dati filtrati e tracciare sia i dati originali che quelli filtrati. Questo filtro modifica principalmente l'ampiezza dei dati originali.
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')

Riferimenti
[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999.
Vedi anche
filter | conv | filter2 | smoothdata | movmean