我正在尝试过滤正弦曲线(),我需要去除所有高于 10 Hz 的频率,接受的过渡区域为 2 Hz(阻带频率 = 12 Hz)
问题是为什么在过滤这个信号后,20 Hz 仍然出现在 FFT 中?有什么不对 ?我知道频域和时域滤波的结果应该相同,但乘法中的第一个和卷积中的第二个。
这是代码:
t=[0:1/50:1];
y=cos(2*pi*20*t)+0.5*sin(2*pi*5*t);
fsamp=50;
frange=[10 12];
mag=[1 0];
devs=[0.02 0.02];
frange=[10 12];
[n,fo,ao,w] = firpmord(frange,mag,devs,fsamp);
n = n + rem(n,2);
b=firpm(n,fo,ao,w,'hilbert');
%%% filter in time domain
final1=filter(b,1,y);
finalfft=abs(fft(final1));
t=[0:1/50:(length(finalfft)-1)/50];
f=[(t/t(end))*50];
figure(1);plot(f,abs(fft(y)));
figure(2);plot(f,finalfft);
%%% filter in freq domain
paddedfft=fft(y);
bfft=fft(b,length(y));
finalfft=paddedfft.*bfft;
final1=ifft(finalfft);
t=[0:1/50:(length(finalfft)-1)/50];
f=[(t/t(end))*50];
t=[0:1/50:(length(final1)-1)/50];
figure(3);plot(f,abs(fft(final1)));





