代码之家  ›  专栏  ›  技术社区  ›  ggkmath

使用Matlab FIR插值的帮助(2行代码)

  •  1
  • ggkmath  · 技术社区  · 14 年前

    如果我把截止值设为0.25*fs/2,一切看起来都很好。但这是否意味着频率含量略高于0.25*fs/2(例如0.4*fs/2)的信号不能线性解释(或者,如何实现这一点?).

    等等,我是不是把旧的和新的混为一谈了?如果fs=fs_new=40Hz,我就能理解发生了什么。如果我将截止值设置为0.25*fs_new/2,其中fs_new=40Hz,那么这就是10Hz(原始采样率)的上限截止频率。所以,fircls1中的Wn(95,Wn,0.01,0.0001)必须是<=0.25。听起来对吗?

    谢谢你的评论。

    % create input
    told = (0:1:299)/10;             % time index for plotting xold
    tnew = (0:1:1199)/40;            % time index for plotting xnew
    xold = sin(2*pi*0.1*told + 1);   % fc=0.1Hz (Pc=10 sec); samplerate = fs = 10Hz
    
    % create filter
    num = fircls1(95, 0.7, 0.01, 0.0001);  % set filter cutoff to 0.7*(fs/2)=3.5Hz
    Hm = mfilt.firinterp(4,num);
    
    % apply filter
    xnew = 4*filter(Hm, xold);
    
    % plot results
    plot(told, xold, 'bo', tnew, xnew, 'r+');
    title('Input (blue) and filtered input (red) versus time index');
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   ggkmath    14 年前

    我发现了我的错误理解。。。这是我在使用fircls1(n,Wn,ripple_passband,ripple_stopband)时对Wn参数的混淆。当将此函数与Matlab的函数mfilt.firinterp(l,num)结合使用时,应将Wn视为标准化为新采样频率的截止频率(而不是旧采样频率,因此我混淆了)。

    因此,当使用mfilt.firinterp 4插值四次(即l=4)时,Wn必须小于或等于0.25,以避免混叠(如果Wn>0.25,则图像重叠)。

    在上面的例子中,我试图使用Wn=0.7,但实际上我真正应该使用的是Wn=0.7*0.25,也就是<0.25。

        2
  •  0
  •   learnvst    14 年前

    有意思的问题(向上投票和赞成),但我无法帮助,因为我没有访问过滤器设计工具箱。在这里粘贴这个问题可能会更幸运:

    http://www.mathworks.com/matlabcentral/newsreader/

    对不起,祝你好运!