MATLABで信号フィルタリングを行っています。今、私はハニング窓を使用してバンドパスフィルタリングウィンドウで50Hzの信号を抽出したいMATLABで狭帯域フィルタを設計する
Fs = 8000; %// Sampling frequency
T = 1/Fs; %// Sample time
L = 16000; %// Length of signal
t = (0:L-1)*T; %// Time vector
y = 40*sin(2*pi*50*t) + 500*sin(2*pi*51*t) + 500*sin(2*pi*49*t);
:私は3つの異なる周波数を有する信号を書きました。ここで
は、フィルタ設計に私のコードです:このフィルタはすることができないのはなぜ
yfilter = filter(Hd.Numerator,1,y);
NFFT = 2^nextpow2(L);
Y = fft(yfilter,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure;
subplot(2,1,1);
plot(yfilter);
subplot(2,1,2);
plot(f,2*abs(Y(1:NFFT/2+1)))
- :その後
function Hd = HannFilter1 Fs = 8000; %// Sampling Frequency N = 4096; %// Order Fc1 = 49.5; %// First Cutoff Frequency Fc2 = 50.5; %// Second Cutoff Frequency flag = 'scale'; %// Sampling Flag win = hann(N+1); b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag); Hd = dfilt.dffir(b);
を、私はこのよう
filter
を使用してフィルタリングします50Hzの信号を抽出しますか? - 私はこのシミュレーションで何か間違っていますか?
- 50Hz信号をどのようにフィルタリングできますか?
50Hz信号の最高サンプルレートはどれですか?非常に重要な質問!現実世界では、バランスシステムのように、主信号は約20Hzであり、環境は非常に騒々しく、私の解決策によるフィルタリングは正解を与えません。この場合、どのようにして最良のフィルタリングアルゴリズムを使用または選択できますか?
私サンプルレートは8000Hzなると私はが唯一の20000サンプルバッファリングすることができた場合には、どのようには、狭帯域通過フィルタを設計することができますか?
これは不条理な性質の通過帯域です。フィルタの周波数応答を確認しましたか? –
はい、フィルタの応答はOKですが、私が見つけた面白い点があります!私が49Hzと51Hzの信号の振幅を10から500に減らすと、すべて正常に動作します!なぜ?! –
もう一つのポイントがあります!フィルタリングされた信号の振幅の最大値は他の信号と強く関連しています! (49Hzと51Hz)が49Hz信号の振幅が2000(500から)に増加すると、フィルタ結果の振幅が大きくなっています。主信号(50Hz)の振幅は固定されています!私は夢中になる!!!!! –