Die Low-Pass-Funktion in MATLAB

November 26

MATLAB ist ein führender Analysepaket für digitale Signalverarbeitung und andere Sorten der technischen Analyse. Signalverarbeitung ist der Auffassung, die jede beliebigen Daten signal setzt sich aus der Summe von vielen Signalen unterschiedlicher Frequenzen ist. Oft werden Signale von verschiedenen Quellen oder Lärm, unterschiedliche Frequenzen haben. HF-Signale können durch convolving ein Signal mit einem Tiefpass-Filter entfernt werden.

Tiefpassfilterung

Filtern, um die Frequenzen zu entfernen basiert auf der Suche nach einer Übertragungsfunktion im Frequenzbereich, die auswählt, die Reichweite und die Größenordnung der Frequenzen in das gefilterte Signal aufnehmen. Dann wird eine Inverse Fourier-Transformation der Frequenz-Domäne-Funktion den Zeitdomäne Filter mit der ausgewählten Frequenz-Transfer-Funktion zu erhalten. Der Zeitbereich Filter wird dann mit dem Signal der Wahl mit der Faltung-Operation angewendet. Alternativ können Sie nehmen die Fourier-Transformation der Zeitdomäne Signalstärke und multiplizieren mit der Frequenz-Domäne-Übertragungsfunktion des Filters, vor der Anwendung einer invers Fourier-Transformation. Das könnte schneller ausführen, wie Faltung ein rechnerisch aufwändiger Vorgang ist.

Verwenden von smooth()

MATLAB enthält die smooth()-Funktion, um die Hochfrequenz-Rauschen in ein Signal zu entfernen, ohne dass der genauen Frequenz-Cut-off für einen Tiefpass-Filter bestimmen. MATLAB verwendet standardmäßig einen gleitenden Durchschnitt Filter fünf benachbarten Datenpunkte. Das zweite Beispiel verwendet eine Spannweite von 10 Datenpunkten und die robuste linear gewichteten Fehlerquadrate-Funktion mit einem zweiten Grad Polynom Modell.

My_smoothed_data = smooth(my_data);My_smoothed_data = smooth(my_data,10,'rloess');

Filter() verwenden

Die MATLAB-Filter-Funktion wird verwendet, um auf ein Signal einen eindimensionalen digitalen Filter anwenden. Um ein Tiefpassfilter mit einer bestimmten Frequenz cutoff anzuwenden, verwenden Sie den folgenden Code:

My_filtered_data = Filter (Freq, [1 Freq-1], My_data);

Die Freq-Variable entspricht T/t, wobei "T" ist die Zeit zwischen den Proben und "t" ist die Zeitkonstante der Frequenzfilter.

Benutzerdefinierte Filter

Tiefpass-Filter haben oft keine exakte Frequenz-Cutoff, alle Frequenzen unterhalb der Grenzfrequenz übergeben und alle Frequenzen oberhalb der Grenzfrequenz ausschließen. In der Tat, da Daten diskret ist, ist ein perfekter Lowpass-Filter unmöglich zu implementieren. Jeden beliebiger Filter kann in MATLAB ausgelegt werden und mithilfe der conv()-Funktion, Anwendung Faltung, wie folgt angewendet:

My_new_signal = Conv (My_signal, My_filter, 'gleiche');