1
ノイズのある信号をシミュレートしてフィルタリングしようとしています。信号はいくつかの低周波信号といくつかのランダムノイズをミックスします。私の目標は14.8Hzの信号を得ることです。 バンドパス帯域幅は14.7Hz〜14.9Hzです。matlabバンドパスフィルタが機能しない
function filteringTest
Hd = KaiserFilter;
Fs = 4000; % Sampling frequency
T = 1/Fs; % Sample time
L = 40000; % Length of signal
t = (0:L-1)*T; % Time vector
r1 = 320;
r2 = 575;
y = 50*sin(2*pi*14.8*t) + r1*sin(2*pi*14.7*t) + r2*sin(2*pi*15.1*t) + 10.1*rand(size(t));
yfilter = filter(Hd.Numerator,1,y);
plot(yfilter)
function Hd = KaiserFilter
Fs = 4000; % Sampling Frequency
N = 4096; % Order
Fc1 = 14.7; % First Cutoff Frequency
Fc2 = 14.9; % Second Cutoff Frequency
flag = 'scale'; % Sampling Flag
Beta = 0.5; % Window Parameter
% Create the window vector for the design algorithm.
win = kaiser(N+1, Beta);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);
私は4096から* 4096 32へのフィルタの順序を増やそうとしたとき、私はこの結果を得る:
このフィルタが正しく動作しない理由を教えてください。私のフィルタリング方法を変更するのですか? 14.8Hzの周波数信号を得るにはどうすればよいですか?
ありがとうございました。
おかげでたくさん。それは動作します! –