利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波

本文使用的开发环境为:Win10 Matlab2018a 版本。

  1. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具。
    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第1张图片

  2. 按照下图调整FIR低通滤波器的参数:

    我们设计的是采样频率100Hz,截止频率10Hz的8阶FIR低通数字滤波器。
    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第2张图片

  3. 生成matlab函数代码:File—Generate MATLAB Code—Filter Design Function

    我在这里将生成的m文件保存为fir_8.m。
    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第3张图片

  4. 在matlab中打开fir_8.m是这个样子的:

    代码如下:
    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第4张图片

    function Hd = fir_8
    %FIR_8 Returns a discrete-time filter object.
    
    % MATLAB Code
    % Generated by MATLAB(R) 9.4 and DSP System Toolbox 9.6.
    % Generated on: 09-Apr-2019 11:22:46
    
    % FIR Window Lowpass filter designed using the FIR1 function.
    
    % All frequency values are in Hz.
    Fs = 100;  % Sampling Frequency
    
    N    = 7;        % Order
    Fc   = 10;       % Cutoff Frequency
    flag = 'scale';  % Sampling Flag
    
    % Create the window vector for the design algorithm.
    win = hamming(N+1);
    
    % Calculate the coefficients using the FIR1 function.
    b  = fir1(N, Fc/(Fs/2), 'low', win, flag);
    Hd = dfilt.dffir(b);
    
    % [EOF]
  1. 接下来我们要设计一个带噪声的信号函数,然后通过这个滤波器,来测试滤波效果:

    在matlab中新建一个脚本,保存为signal.m,与fir_8.m保存在同一文件夹中。

    代码如下:

    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第5张图片

    x = 0:0.01:4;%定义400个取样点
    y = 0.1*sin(pi*x) +0.1*sin(2*pi*49*x);%设计含有高频信号与低频信号的输入信号
    figure(1);
    plot(x,y);%画出输入信号图形
    title('输入信号');
    
    Hd = fir_8;%引入滤波器,Hd包含了fir_8滤波器的各项参数
    d = filter(Hd,y);%通过filter函数将信号y送入参数为Hd的滤波器,输出信号d
    figure(2);
    plot(x,d);%画出通过滤波器的信号d的波形
    title('输出信号');
    
    figure(3);
    plot(x,y,'r');%画出输入信号图形
    hold on;%保持画出的输入信号图形
    plot(x,d,'b');%画出输出信号波形
    title('输入/输出信号');
    legend('输出信号','输入信号');
  1. 运行signal.m(在matlab命令行窗口输入signal即可)

    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第6张图片

    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第7张图片

    利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波_第8张图片

PS: 本文主要参考惠飞《FPGA嵌入式系统开发与实例》第5.4.3节

代码文件下载

你可能感兴趣的:(matlab)