2009-11-23 5 views
24

Gibt es eine einfache Möglichkeit, einen Tiefpass- oder Hochpassfilter auf ein Array in MATLAB anzuwenden? Ich bin ein wenig überwältigt von MATLABs Macht (oder der Komplexität der Mathematik?) Und brauche eine einfache Funktion oder Anleitung, da ich es nicht aus der Dokumentation heraus oder durch das Internet herausfinden konnte.MATLAB: Wenden Sie einen Tiefpass- oder Hochpassfilter auf ein Array an

Antwort

31

sicher, schauen Sie sich die filter Funktion an.

Wenn Sie nur ein 1-poligen Tiefpassfilter benötigen, dann ist es

xfilt = filter(a, [1 a-1], x); 

wobei a = T/τ, T die Zeit zwischen den Proben = und τ (tau) ist die Filterzeitkonstante.

Hier ist die entsprechenden Hochpassfilter:

xfilt = filter([1-a a-1],[1 a-1], x); 

Wenn Sie einen Filter entwerfen müssen, und haben eine Lizenz für die Signal Processing Toolbox, gibt es a bunch of functions, Blick auf fvtool und fdatool.

+0

Ich wusste, es wäre so einfach. Danke vielmals! – Christian

2

Sie können einen Lowpass-Butterworth-Filter zur Laufzeit mit der Funktion butter() entwerfen und diese dann auf das Signal anwenden.

fc = 300; % Cut off frequency 
fs = 1000; % Sampling rate 

[b,a] = butter(6,fc/(fs/2)); % Butterworth filter of order 6 
x = filter(b,a,signal); % Will be the filtered signal 

Mit dieser Methode sind auch Hochpass- und Bandpassfilter möglich. Siehe https://www.mathworks.com/help/signal/ref/butter.html

+0

Warnung. Dies erfordert die Signal Processing Toolbox. – rayryeng

Verwandte Themen