zoukankan      html  css  js  c++  java
  • matlab中设计低通滤波器

    方法1

    可以通过Filter Builder交互界面设计,这里选择Lowpass。

    指定参数,选择FIR滤波器,采样频率128Hz,通带截止频率15Hz,阻带截止频率16Hz。通带最大波纹0.1dB,阻带最小衰减60dB。这里选用Kaiser窗法设计(或等波纹法equiripple)。

     可以生成对应的代码

    function Hd = getFilter
    %GETFILTER Returns a discrete-time filter object.
    
    % MATLAB Code
    % Generated by MATLAB(R) 9.3 and DSP System Toolbox 9.5.
    % Generated on: 22-Jun-2020 15:08:24
    
    Fpass = 15;   % Passband Frequency
    Fstop = 16;   % Stopband Frequency
    Apass = 0.1;    % Passband Ripple (dB)
    Astop = 60;   % Stopband Attenuation (dB)
    Fs    = 128;  % Sampling Frequency
    
    h = fdesign.lowpass('fp,fst,ap,ast', Fpass, Fstop, Apass, Astop, Fs);
    
    % 等波纹法
    %Hd = design(h, 'equiripple', 'MinOrder', 'any', 'StopbandShape', 'flat');
    % kaiser窗法
    Hd = design(h, 'kaiserwin');

    查看滤波器特性

    Hlp = getFilter;
    freqz(Hlp) 
    % fvtool(lpFilt)
    

     

    通过filtfilt获得零相位延迟的滤波

    y = filtfilt(Hlp.Numerator, 1, x); % filtfilt(b, 1, x)

     滤波结果

     

    方法2

    也可以直接通过fdesign和design设计,跟前面是等价的。

    Fpass = 15;   % Passband Frequency
    Fstop = 16;   % Stopband Frequency
    Apass = 0.1;    % Passband Ripple (dB)
    Astop = 60;   % Stopband Attenuation (dB)
    Fs    = 128;  % Sampling Frequency
    
    h = fdesign.lowpass('fp,fst,ap,ast', Fpass, Fstop, Apass, Astop, Fs);
    
    % 等波纹法
    %Hd = design(h, 'equiripple', 'MinOrder', 'any', 'StopbandShape', 'flat');
    % kaiser窗法
    Hd = design(h, 'kaiserwin');

    方法3

    也可以通过designfilt设计数字滤波器,结果是一样的。

    lpFilt = designfilt('lowpassfir','PassbandFrequency',15/64, ...
             'StopbandFrequency',16/64,'PassbandRipple',0.1, ...
             'StopbandAttenuation',60,'DesignMethod','kaiserwin');
    
    y = filtfilt(lpFilt, x);
    

     滤波结果

     

  • 相关阅读:
    IIS主机托管的FSO设置用户权限问题
    关于使用UTF8开发ASP网站
    构建Android开发环境
    iOS如何取得APP的版本信息跟服务器对比进行升级提示?
    经典讲解VB.NET线程方法之访问数据库
    IIS7.0下ASP+Access(MDB)应用环境设置要点
    一文明白数据库事务隔离级别
    EA鼻祖,Zachman,6 行(视点)+ 6 列(W5H)+ 6 条规则
    C语言位运算详解
    关于while 和if
  • 原文地址:https://www.cnblogs.com/jiangkejie/p/13935890.html
Copyright © 2011-2022 走看看