【问题标题】:How to apply a low-pass or high-pass filter to an array in Matlab?如何对 Matlab 中的数组应用低通或高通滤波器?
【发布时间】:2010-12-19 12:15:36
【问题描述】:

是否有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组?我对 MATLAB 的强大功能(或数学的复杂性?)有点不知所措,需要一个简单的函数或一些指导,因为我无法从文档或搜索网络中弄清楚。

【问题讨论】:

    标签: matlab filter signal-processing


    【解决方案1】:

    查看filter 函数。

    如果您只需要一个 1 极点低通滤波器,那就是

    xfilt = filter(a, [1 a-1], x);
    

    其中 a = T/τ,T = 采样之间的时间,τ (tau) 是滤波器时间常数。

    下面是对应的高通滤波器:

    xfilt = filter([1-a a-1],[1 a-1], x);
    

    如果您需要设计一个滤波器,并拥有 Signal Processing Toolbox 的许可证,有 a bunch of functions,请查看 fvtoolfdatool

    【讨论】:

      【解决方案2】:

      您可以在运行时使用butter() 函数设计一个低通巴特沃斯滤波器,然后将其应用于信号。

      fc = 300; % Cut off frequency
      fs = 1000; % Sampling rate
      
      [b,a] = butter(6,fc/(fs/2)); % Butterworth filter of order 6
      x = filter(b,a,signal); % Will be the filtered signal
      

      使用这种方法也可以使用高通和带通滤波器。见https://www.mathworks.com/help/signal/ref/butter.html

      【讨论】:

      • 警告。这需要信号处理工具箱。
      猜你喜欢
      • 2017-09-17
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      相关资源
      最近更新 更多