web-dev-qa-db-ja.com

Matlabのアレイにローパスまたはハイパスフィルターを適用する方法は?

ローパスまたはハイパスフィルターをMATLABの配列に適用する簡単な方法はありますか?私は、MATLABのパワー(または数学の複雑さ)に少し圧倒されており、ドキュメントやWebを検索しても理解できなかったため、簡単な機能またはガイダンスが必要です。

25
Christian

filter 関数を見てください。

1ポールローパスフィルターだけが必要な場合は、

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

ここで、a = T /τ、T =サンプル間の時間、τ(tau)はフィルター時定数です。

対応するハイパスフィルターは次のとおりです。

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

フィルターを設計する必要があり、Signal Processing Toolboxのライセンスを持っている場合、 一連の関数 があります。 fvtoolfdatool を見てください。 。

33
Jason S

butter()関数を使用して、実行時にローパスバタワースフィルターを設計し、それを信号に適用できます。

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

この方法では、ハイパスおよびバンドパスフィルターも使用できます。 https://www.mathworks.com/help/signal/ref/butter.html を参照してください

4
Ahmad