让我们假设我们有信号
>> fs=100;
>> ts=1/fs;
>> t=0:ts:2.93;
>> x=23*sin(2*pi*30*t)+22*cos(2*pi*51*t)+24*sin(2*pi*15*t)+6*randn(size(t));
因为一个频率高,然后采样频率除以2,我想应用低通滤波器,低于50的所有频率应保持不变,但所有其他频率应该被删除,所以我试过:
>> fc=50;
>> wn=(2/fs)*fc;
>> b=fir1(20,wn,'low',kaiser(21,3));
但是这个命令
fvtool(b,1,'fs',fs)
生成错误:
系数必须是有限的。
还有命令
y = filter(b,1,x); removes all frequency components from signal,what is problem?
答案 0 :(得分:3)
b
中的系数均为NaN
。这是因为您的截止频率设置为1,即奈奎斯特频率,但根据fir1
help:
The cut-off frequency Wn must be between 0 < Wn < 1.0, with 1.0 corresponding to half
the sample rate.
使用低通滤波器将截止值设置为1.0是没有意义的,因为它可以设计为通过所有频率。
无论如何,归一化频率从0到fs / 2,所以如果你想要通过50以下,你的工作就完成了,因为当采样率为100 Hz时,这就是奈奎斯特速率。高于50Hz的频率不能用具有100Hz fs的离散表示来表示。理想情况下,在离散/采样之前过滤掉高频。