MATLABのノッチフィルターを使用した50Hzのフィルター処理


10

私はこれについて多くを読みましたが、すべてをうまくまとめることができなかったので、私はいくつかの助けを探しています。

信号から50 Hzをフィルター処理する必要があります。最適なオプションはノッチフィルターまたはLMSフィルターのようですが、ノイズのコピーがないため、ノッチフィルターが最良の選択のようです。

サンプリング周波数(16kHz)を知っているので、周波数を正規化する必要はなく、持続時間は30秒です。帯域幅はかなり狭くすることができ、49.5Hz〜50.5Hzで十分です。

私はの組み合わせを使用する必要があるように見えますfilteriirnotch、私はどのように完全にはよく分かりません。

誰かがこれをすべてまとめることができれば、私はそれを大いに感謝します。ありがとう。


ダンピング/レダマンの自己回帰フィルターのシミュレーション方法を確認したいですか???

上記のプログラムで「x」を定義する方法(「x」は信号入力です)...ありがとう

回答:


14

iirnotchの機能はわかりませんが、これは手動でノッチフィルターを設計する方法です。

fs = 20000;             % sampling rate
f0 = 50;                % notch frequency
fn = fs/2;              % Nyquist frequency
freqRatio = f0/fn;      % ratio of notch freq. to Nyquist freq.

notchWidth = 0.1;       % width of the notch

% Compute zeros
notchZeros = [exp( sqrt(-1)*pi*freqRatio ), exp( -sqrt(-1)*pi*freqRatio )];

% Compute poles
notchPoles = (1-notchWidth) * notchZeros;

figure;
zplane(notchZeros.', notchPoles.');

b = poly( notchZeros ); %  Get moving average filter coefficients
a = poly( notchPoles ); %  Get autoregressive filter coefficients

figure;
freqz(b,a,32000,fs)

% filter signal x
y = filter(b,a,x);

それがまさに私が探していたものです、ありがとう。

シンプルでエレガント。notchWidthが小さいほど、ノッチの幅が小さくなることを理解していますが、notchWidthは具体的な数量と関係がありますか?
Lolo 2016年

@ロロ私はそうは思わない。それは便利な数のように思えたので、私はそれを選びました。
Phonon

7

help iirnotchと入力すると、次の例が表示されます。

% Design a filter with a Q-factor of Q=35 to remove a 60 Hz tone from 
% system running at 300 Hz.
Wo = 60/(300/2);  BW = Wo/35;
[b,a] = iirnotch(Wo,BW);  

60を50 Hzに置き換えてから、次のようにします。

Y = filter(b,a,X)

動作するはずです(Xを使用してデータ)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.