【问题标题】:design low pass filter设计低通滤波器
【发布时间】:2015-01-03 21:07:55
【问题描述】:

假设我们有信号

>> 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));

因为一个频率高然后采样频率除以二,我想应用低通滤波器来使所有低于 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?

【问题讨论】:

    标签: matlab filter signal-processing lowpass-filter


    【解决方案1】:

    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 时的奈奎斯特率。 50 Hz 以上的频率不能用 100 Hz fs 的离散表示来表示。理想情况下您会在离散化/采样之前滤除高频

    【讨论】:

    • @datodatuashvili 选择合适的 Wn 或根本不过滤。使用 100 Hz 的采样率,您只能从一开始就表示最高 50 Hz 的频率。
    • 我只是在练习,让我们假设 51 是频率,所以我想重新调整
    • @datodatuashvili 请阅读 wikipedia.org/wiki/Nyquist_frequency
    • 你不懂,我需要从语法上实现,不是理论上我知道是什么意思
    • @datodatuashvili 我想是你不明白:如果你的采样频率是 100Hz,你不能代表(因此过滤)任何高于 50Hz 的东西。跨度>
    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2014-07-29
    • 2011-05-29
    • 2019-04-29
    • 2015-05-09
    • 1970-01-01
    相关资源
    最近更新 更多