精华内容
下载资源
问答
  • 个人收集的3种滤波器设计软件,很强大。其中包含带通,低通等滤波器设计
  • 下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意!1.低通滤波器使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。function y=lowp(x,f1,f3,rp,rs,Fs) ...

    本文为转载内容,原文地址为点击打开链接

    下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意!

    1.低通滤波器

    使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。

    function y=lowp(x,f1,f3,rp,rs,Fs)
    %低通滤波
    %使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    %即,f1,f3的值都要小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带截止频率
    % f 3:阻带截止频率
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %FS:序列x的采样频率
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    %
    wp=2*pi*f1/Fs;
    ws=2*pi*f3/Fs;
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi);
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    %
    y=filter(bz1,az1,x);%对序列x滤波后得到的序列y
    end
    --------------------------------------

    低通滤波器使用例子的代码

    fs=2000;
    t=(1:fs)/fs;
    ff1=100;
    ff2=400;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);
    figure;
    subplot(211);plot(t,x);
    subplot(212);hua_fft(x,fs,1);
    %低通测试
    % y=filter(bz1,az1,x);
    y=lowp(x,300,350,0.1,20,fs);
    figure;
    subplot(211);plot(t,y);
    subplot(212);hua_fft(y,fs,1);%hua_fft()函数是画频谱图的函数,代码在下面给出,要保存为m文件调用
    %这段例子还调用了我自己写的专门画频谱图的函数,也给出,不然得不出我的结果;

    %画信号的幅频谱和功率谱
    %频谱使用matlab例子表示
    function hua_fft(y,fs,style,varargin)
    %当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱
    %当style=1时,还可以多输入2个可选参数
    %可选输入参数是用来控制需要查看的频率段的
    %第一个是需要查看的频率段起点
    %第二个是需要查看的频率段的终点
    %其他style不具备可选输入参数,如果输入发生位置错误
    nfft=2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft)
    %nfft=1024;%人为设置FFT的步长nfft
      y=y-mean(y);%去除直流分量
    y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布
    y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    y_f=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列
    % y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    if style==1
        ifnargin==3
           plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));%matlab的帮助里画FFT的方法
           %ylabel('幅值');xlabel('频率');title('信号幅值谱');
           %plot(y_f,abs(y_ft(1:nfft/2)));%论坛上画FFT的方法
        else
           f1=varargin{1};
           fn=varargin{2};
           ni=round(f1 * nfft/fs+1);
           na=round(fn * nfft/fs+1);
           plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft));
        end
    
    elseif style==2
               plot(y_f,y_p(1:nfft/2));
               %ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
        else
           subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));
           ylabel('幅值');xlabel('频率');title('信号幅值谱');
           subplot(212);plot(y_f,y_p(1:nfft/2));
           ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
    end
    end

    下面三幅图分别是滤波前的时频图,滤波器的滤波特性曲线图和滤波后的时频图,通过图可以看出成功留下了100Hz的低频成分而把不要的高频成分去除了。

    2.高通滤波器

    function y=highp(x,f1,f3,rp,rs,Fs)
    %高通滤波
    %使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    %即,f1,f3的值都要小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带截止频率
    % f 2:阻带截止频率
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %FS:序列x的采样频率
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    %
    wp=2*pi*f1/Fs;
    ws=2*pi*f3/Fs;
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi,'high');
    
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end

    下面是高通滤波器的例子

    fs=2000;
    t=(1:fs)/fs;
    ff1=100;
    ff2=400;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);
    figure;
    subplot(211);plot(t,x);
    subplot(212);hua_fft(x,fs,1);
    
    %------高通测试
    z=highp(x,350,300,0.1,20,fs);
    figure;
    subplot(211);plot(t,z);
    subplot(212);hua_fft(z,fs,1);


    下面三幅图分别是滤波前的时频图,滤波器的滤波特性曲线图和滤波后的时频图,通过图可以看出成功留下了400Hz的高频成分而把不要的低频成分100Hz去除了。


    3.带通滤波器

    function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs)
    %带通滤波
    %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    %即,f1,f3,fs1,fsh,的值小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带左边界
    % f 3:通带右边界
    % fs1:衰减截止左边界
    % fsh:衰变截止右边界
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %FS:序列x的采样频率
    % f1=300;f3=500;%通带截止频率上下限
    % fsl=200;fsh=600;%阻带截止频率上下限
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    %
    wp1=2*pi*f1/Fs;
    wp3=2*pi*f3/Fs;
    wsl=2*pi*fsl/Fs;
    wsh=2*pi*fsh/Fs;
    wp=[wp1 wp3];
    ws=[wsl wsh];
    %
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi);
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end

    带通滤波器使用例子

    %--------------
    %带通滤波器测试程序
    fs=2000;
    t=(1:fs)/fs;
    ff1=100;
    ff2=400;
    ff3=700;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t)+sin(2*pi*ff3*t);
    figure;
    subplot(211);plot(t,x);
    subplot(212);hua_fft(x,fs,1);
    % y=filter(bz1,az1,x);
    y=bandp(x,300,500,200,600,0.1,30,fs);
    figure;
    subplot(211);plot(t,y);
    subplot(212);hua_fft(y,fs,1);


    %调用到的hua_fft()函数代码如下

    function hua_fft(y,fs,style,varargin)
    %当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱
    %当style=1时,还可以多输入2个可选参数
    %可选输入参数是用来控制需要查看的频率段的
    %第一个是需要查看的频率段起点
    %第二个是需要查看的频率段的终点
    %其他style不具备可选输入参数,如果输入发生位置错误
    nfft=2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft)
    %nfft=1024;%人为设置FFT的步长nfft
      y=y-mean(y);%去除直流分量
    y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布
    y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    y_f=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列
    % y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    if style==1
        ifnargin==3
           plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));%matlab的帮助里画FFT的方法
           %ylabel('幅值');xlabel('频率');title('信号幅值谱');
           %plot(y_f,abs(y_ft(1:nfft/2)));%论坛上画FFT的方法
        else
           f1=varargin{1};
           fn=varargin{2};
           ni=round(f1 * nfft/fs+1);
           na=round(fn * nfft/fs+1);
           plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft));
        end
    
    elseif style==2
               plot(y_f,y_p(1:nfft/2));
               %ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
        else
           subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));
           ylabel('幅值');xlabel('频率');title('信号幅值谱');
           subplot(212);plot(y_f,y_p(1:nfft/2));
           ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
    end
    end
    运行结果如下图,第一幅是滤波前测试信号的时频图,第二幅是滤波器的滤波曲线图,第三幅是经滤波后的测试信号时频图。

    4.带阻滤波器

    function y=bands(x,f1,f3,fsl,fsh,rp,rs,Fs)
    %带阻滤波
    %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    %即,f1,f3,fs1,fsh,的值小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带左边界
    % f 3:通带右边界
    % fs1:衰减截止左边界
    % fsh:衰变截止右边界
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %FS:序列x的采样频率
    % f1=300;f3=500;%通带截止频率上下限
    % fsl=200;fsh=600;%阻带截止频率上下限
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    %
    wp1=2*pi*f1/Fs;
    wp3=2*pi*f3/Fs;
    wsl=2*pi*fsl/Fs;
    wsh=2*pi*fsh/Fs;
    wp=[wp1 wp3];
    ws=[wsl wsh];
    %
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi,'stop');
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end

    使用例子

    %带阻滤波器测试
    fs=1000;
    t=(1:fs)/fs;
    y=sin(2*pi*100*t)+sin(2*pi*150*t)+sin(2*pi*200*t);
    figure;hua_fft(y,fs,1);
    z=bands(y,110,190,140,160,0.1,30,fs);
    figure;hua_fft(z,fs,1);

    运行结果如下图,第一幅是滤波前测试信号的频谱图,第二幅是滤波器的滤波曲线图,第三幅是经滤波后的测试信号频谱图。




    展开全文
  • 滤波器设计是电子电路设计中经常碰到的问题。在51单片机系统中,51单片机VCC引脚旁的10u和0.1u的电容就是最简单的滤波器和滤波装置,但复杂的滤波器设计更是手机等高频电路系统中必不可少的硬件装置。 一般的,...

     

    滤波器设计是电子电路设计中经常碰到的问题。在51单片机系统中,51单片机VCC引脚旁的10u和0.1u的电容就是最简单的滤波器和滤波装置,但复杂的滤波器设计更是手机等高频电路系统中必不可少的硬件装置。

    一般的,滤波器可分为有源滤波器和无源滤波器两种。其中,有源滤波器由集成运放和电阻、电容等组成,根据高通、低通、带通还是带阻方式,电容和电阻的配置位置有所不同。一般说来,有源滤波器根据配置位置和功能的不同,普遍采用MFB和Sallen-Key两种拓扑形式。

    典 型的软件有:TI公司的FilterPro,Microchip公司的FilterLab2.0等,均是免费软件,可从其网站上免费下载使用。另一款非常 著名的设计软件是FilterWiz Pro,功能与FilterPro和FilterLab2.0类似,还可以选择各阶滤波器的拓扑结构。FilterWiz Pro无免费版本。

    需要说明的是,FilterLab2.0软件的稳定性明显好过FilterPro,虽然FilterPro在业界口碑尚可。

    无源滤波器就是常说的RC、RLC等纯粹采用电阻、电容和电感等无源器件组成的滤波装置,成本低廉,稳定性好。一般的低频滤波器网络普遍采用电阻和电容组成,只有高频才会考虑配置电感装置。

    网络上的无源滤波器设计软件较多。但博主推荐FilterFree软件。FilterFree软件为免费滤波器设计软件,可完成有源滤波器设计,也可进行无源滤波器设计,可从nuhertz公司网站上免费下载。更强大功能的Filter Solution软件不但可进行有源和无源滤波器软件设计,还可进行器件数值的更改和其他器件参数的自动匹配。

     

    http://blog.21ic.com/user1/8418/archives/2012/88596.html

    转载于:https://www.cnblogs.com/jiansiming/articles/2518617.html

    展开全文
  • 采用 MATLAB 滤波器函数快速 设计数字滤波器的方法 IIR 滤波器设计 ? 基于 IIR 滤波器的特性必须首先理解滤波 器的 3 种描述形式并建立其关系 ? 冲击响应线性系统时域基本的输入输出 描述 ? 频率响应包括幅值响应和...
  • 常用滤波器Matlab程序设计

    千次阅读 多人点赞 2019-10-31 23:22:00
    常用滤波器Matlab程序设计 (低通滤波器、高通滤波器、带通滤波器、带阻滤波器) 以下四个滤波器都是切比雪夫I型数字滤波器 1.低通滤波器 ​ 低通滤波(Low-pass filter) 是一种过滤方式,规则为低频信号能正常通过,...

    常用滤波器Matlab程序设计

    (低通滤波器、高通滤波器、带通滤波器、带阻滤波器)

    以下四个滤波器都是切比雪夫I型数字滤波器

    1.低通滤波器

    ​ 低通滤波(Low-pass filter) 是一种过滤方式,规则为低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。但是阻隔、减弱的幅度则会依据不同的频率以及不同的滤波程序(目的)而改变。它有的时候也被叫做高频去除过滤(high-cut filter)或者最高去除过滤(treble-cut filter)。低通过滤是高通过滤的对立。

    低通滤波

    ​ 低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过,在数字信号中,这个频率点也就是截止频率,当频域高于这个截止频率时,则全部赋值为0。因为在这一处理过程中,让低频信号全部通过,所以称为低通滤波。

    ​ 低通过滤的概念存在于各种不同的领域,诸如电子电路,数据平滑,声学阻挡,图像模糊等领域经常会用到。

    ​ 在数字图像处理领域,从频域看,低通滤波可以对图像进行平滑去噪处理。

    低通滤波器

    对于不同滤波器而言,每个频率的信号的减弱程度不同。当使用在音频应用时,它有时被称为高频剪切滤波器,或高音消除滤波器。

    低通滤波器概念有许多不同的形式,其中包括电子线路(如音频设备中使用的hiss 滤波器、平滑数据的数字算法、音障(acoustic barriers)、图像模糊处理等等,这两个工具都通过剔除短期波动、保留长期发展趋势提供了信号的平滑形式。低通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的作用;低通滤波器有很多种。其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。

    接下来用Matlab程序设计低通滤波器生成m文件如下:

    function y=lowp(x,f1,f3,rp,rs,Fs)
    %低通滤波
    %使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    %即,f1,f3的值都要小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带截止频率
    % f 3:阻带截止频率
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %Fs:序列x的采样频率
    wp=2*pi*f1/Fs;
    ws=2*pi*f3/Fs;
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi);
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('当前低通滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);%对序列x滤波后得到的序列y
    end
    

    为了方便起见,专门封装专门画频谱图的函数,函数名plot_fft。后边所有绘制有关函数频谱图将会直接调用,为避免函数调用出现问题,此函数生产m文件保存到程序运行当前文件夹下。以下是plot_fft函数设计实现。

    %画信号的幅频谱和功率谱
    function plot_fft(y,fs,style,varargin)
    %当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱
    %当style=1时,还可以多输入2个可选参数
    %可选输入参数是用来控制需要查看的频率段的
    %第一个是需要查看的频率段起点
    %第二个是需要查看的频率段的终点
    %其他style不具备可选输入参数,如果输入发生位置错误
    nfft=2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft)
    %nfft=1024;%人为设置FFT的步长nfft
      y=y-mean(y);%去除直流分量
    y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布
    y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    y_f=fs*(0:nfft/2-1)/nfft;%T变换后对应的频率的序列
    % y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
    if style==1
        if nargin==3
           %plot(y_f,abs(y_ft(1:nfft/2)));%论坛上画FFT的方法
           plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));%matlab的帮助里画FFT的方法
           ylabel('幅值');xlabel('频率');title('信号幅值谱');
        else
           f1=varargin{1};
           fn=varargin{2};
           ni=round(f1 * nfft/fs+1);
           na=round(fn * nfft/fs+1);
           plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft));
           ylabel('幅值');xlabel('频率');title('信号幅值谱');
        end
    elseif style==2
               plot(y_f,y_p(1:nfft/2));
               ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
        else
           subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));
           ylabel('幅值');xlabel('频率');title('信号幅值谱');
           subplot(212);plot(y_f,y_p(1:nfft/2));
           ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
    end
    end
    
    低通滤波器案例设计:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %低通滤波器案例设计
    clear all; clc; close all;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % rp=0.1;rs=20;%通带边衰减DB值和阻带边衰减DB值(根据实际情况设定参数此为测试默认值)
    % Fs=2000;%采样率
    fs=2000;%采样频率
    t=(1:fs)/fs;%采样时间
    ff1=100;%信号频率100,400
    ff2=400;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);%带测试的x序列
    figure;
    subplot(211);plot(t,x);%原序列图象。
    subplot(212);plot_fft(x,fs,1);%原图像对应频谱
    %低通测试
    % y=filter(bz1,az1,x);
    y=lowp(x,300,350,0.1,20,fs);%低通滤波器函数测试。
    figure;
    subplot(211);plot(t,y);%低通滤波器输出序列
    subplot(212);plot_fft(y,fs,1);%低通滤波器输出序列对应频谱
    %plot_fft()函数已在上面给出主需要调用即可。
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DrKPScht-1572535339774)(G:\研究生\项目小组任务\程序设计\第三周任务\lowp_result.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46kcurke-1572535339778)(G:\研究生\项目小组任务\程序设计\第三周任务\band_low.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8XG3Piu-1572535339778)(G:\研究生\项目小组任务\程序设计\第三周任务\lowp.bmp)]

    总结:

    ​ 通过简单测试,以上三幅图分别是滤波前后的时频图,滤波器的滤波特性曲线图。通过图可以看出低通滤波器成功留下了100Hz的低频成分而把不要的高频成分去除了。实现低通滤波器基本功能。

    2.高通滤波器

    ​ 高通滤波(high-pass filter) 是一种过滤方式,规则为高频信号能正常通过,而低于设定临界值的低频信号则被阻隔、减弱。但是阻隔、减弱的幅度则会依据不同的频率以及不同的滤波程序(目的)而改变。它有的时候也被叫做低频去除过滤(low-cut filter)。高通滤波是低通滤波的对立。

    高通滤波

    ​ 高通滤波是只对低于某一给定频率以下的频率成分有衰减作用,而允许这个截频以上的频率成分通过,并且没有相位移的滤波过程。主要用来消除低频噪声,也称低截止滤波器。

    ​ 高通滤波属于[频率域]滤波,它保留高频,抑制低频,是[图像锐化]的一种方式。

    高通滤波器

    ​ 高通滤波器是一种让某一频率以上的信号分量通过,而对该频率以下的信号分量大大抑制的电容、电感与电阻等器件的组合装置。其特性在时域及频域中可分别用冲激响应及频率响应描述。后者是用以频率为自变量的函数表示,一般情况下它是一个以复变量jω为自变量的的复变函数,以H(jω)表示。它的模H(ω)和幅角φ(ω)为角频率ω的函数,分别称为系统的“幅频响应”和“相频响应”,它分别代表激励源中不同频率的信号成分通过该系统时所遇到的幅度变化和相位变化。可以证明,系统的“频率响应”就是该系统“冲激响应”的傅里叶变换。当线性无源系统可以用一个N阶线性微分方程表示时,频率响应H(jω)为一个有理分式,它的分子和分母分别与微分方程的右边和左边相对应。

    接下来用Matlab程序设计高通滤波器生成m文件如下:

    function y=highp(x,f1,f3,rp,rs,Fs)
    %高通滤波
    %使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    %即,f1,f3的值都要小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带截止频率
    % f 2:阻带截止频率
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %Fs:序列x的采样频率
    wp=2*pi*f1/Fs;
    ws=2*pi*f3/Fs;
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi,'high');
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('当前高通滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end
    
    高通滤波器案例设计:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %高通滤波器案例设计测试程序
    clear all; clc; close all;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    fs=2000;%采样频率
    t=(1:fs)/fs;%采样时间
    ff1=100;%信号频率100,400
    ff2=400;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);%带测试的x序列
    figure;
    subplot(211);plot(t,x);%原序列图谱。
    subplot(212);plot_fft(x,fs,1);%原图像对应频谱
    %高通测试
    z=highp(x,350,300,0.1,20,fs);%高通滤波器函数测试。
    figure;
    subplot(211);plot(t,z);%高通滤波器输出序列图谱
    subplot(212);plot_fft(z,fs,1);%高通滤波器输出序列对应频谱
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARL0tTr0-1572535339782)(G:\研究生\项目小组任务\程序设计\第三周任务\highp.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gkr6YIt8-1572535339786)(G:\研究生\项目小组任务\程序设计\第三周任务\highp_band.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tcCtzaxF-1572535339790)(G:\研究生\项目小组任务\程序设计\第三周任务\highp_result.bmp)]

    总结:

    ​ 通过简单测试,以上三幅图分别是滤波前后的时频图,滤波器的滤波特性曲线图。通过图可以看出高通滤波器成功留下了400Hz的高频成分而把不要的低频成分去除了。实现高通滤波器基本功能。

    3.带通滤波器

    ​ 带通滤波器(band-pass filter)是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。

    定义:

    带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。一个模拟带通滤波器的例子是电阻-电感-电容电路(RLC circuit)。这些滤波器也可以用低通滤波器高通滤波器组合来产生。

    工作原理:

    ​ 一个理想的带通滤波器应该有一个完全平坦的通带,在通带内没有放大或者衰减,并且在通带之外所有频率都被完全衰减掉,另外,通带外的转换在极小的频率范围完成。

    ​ 实际上,并不存在理想的带通滤波器。滤波器并不能够将期望频率范围外的所有频率完全衰减掉,尤其是在所要的通带外还有一个被衰减但是没有被隔离的范围。这通常称为滤波器的滚降现象,并且使用每十倍频的衰减幅度的dB数来表示。通常,滤波器的设计尽量保证滚降范围越窄越好,这样滤波器的性能就与设计更加接近。然而,随着滚降范围越来越小,通带就变得不再平坦,开始出现“波纹”。这种现象在通带的边缘处尤其明显,这种效应称为吉布斯现象

    ​ 在频带较低的剪切频率f1和较高的剪切频率f2之间是共振频率,这里滤波器的增益最大,滤波器的带宽就是f2和f1之间的差值。

    接下来用Matlab程序设计带通滤波器生成m文件如下:

    function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs)
    %带通滤波
    %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    %即,f1,f3,fs1,fsh,的值小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带左边界
    % f 3:通带右边界
    % fs1:衰减截止左边界
    % fsh:衰变截止右边界
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %Fs:序列x的采样频率
    wp1=2*pi*f1/Fs;
    wp3=2*pi*f3/Fs;
    wsl=2*pi*fsl/Fs;
    wsh=2*pi*fsh/Fs;
    wp=[wp1 wp3];
    ws=[wsl wsh];
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi);
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end
    
    带通滤波器案例设计:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %带通滤波器案例设计测试程序
    clear all; clc; close all;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % f1=300;f3=500;%通带截止频率上下限
    % fsl=200;fsh=600;%阻带截止频率上下限
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    fs=2000;%采样频率
    t=(1:fs)/fs;%采样时间
    ff1=100;%信号频率100,400,700
    ff2=400;
    ff3=700;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t)+sin(2*pi*ff3*t);%带测试的x序列
    figure;
    subplot(211);plot(t,x);%原序列图谱。
    subplot(212);plot_fft(x,fs,1);%原图像对应频谱
    % y=filter(bz1,az1,x);
    %带通测试
    y=bandp(x,300,500,200,600,0.1,30,fs);%带通滤波器函数测试。
    figure;
    subplot(211);plot(t,y);%带通滤波器输出序列图谱
    subplot(212);plot_fft(y,fs,1);%带通滤波器输出序列对应频谱
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xnyopwYK-1572535339794)(G:\研究生\项目小组任务\程序设计\第三周任务\bandp.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZQvJWlPr-1572535339798)(G:\研究生\项目小组任务\程序设计\第三周任务\bandp_band.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSrXHmCQ-1572535339798)(G:\研究生\项目小组任务\程序设计\第三周任务\bandp_result.bmp)]

    总结:

    ​ 通过简单测试,以上三幅图分别是滤波前后的时频图,滤波器的滤波特性曲线图。通过图可以看出带通滤波器成功留下了400Hz的带通频带内成分而把不要的频带成分去除了。实现带通滤波器基本功能。

    4.带阻滤波器

    ​ 带阻滤波器(bandstop filters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器,与带通滤波器的概念相对。其中点阻滤波器(notch filter)是一种特殊的带阻滤波器,它的阻带范围极小,有着很高的Q值(Q Factor)。

    定义:

    ​ 在电路中将输入电压同时作用于低通滤波器和高通滤波器,再将两个电路的输出电压求和,就可以得到带阻滤波器。带阻滤波器一般分为腔体带阻滤波器和LC带阻滤波器。

    接下来用Matlab程序设计带阻滤波器生成m文件如下:

    function y=bands(x,f1,f3,fsl,fsh,rp,rs,Fs)
    %带阻滤波
    %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    %即,f1,f3,fs1,fsh,的值小于 Fs/2
    %x:需要带通滤波的序列
    % f 1:通带左边界
    % f 3:通带右边界
    % fs1:衰减截止左边界
    % fsh:衰变截止右边界
    %rp:边带区衰减DB数设置
    %rs:截止区衰减DB数设置
    %FS:序列x的采样频率
    wp1=2*pi*f1/Fs;
    wp3=2*pi*f3/Fs;
    wsl=2*pi*fsl/Fs;
    wsh=2*pi*fsh/Fs;
    wp=[wp1 wp3];
    ws=[wsl wsh];
    % 设计切比雪夫滤波器;
    [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    [bz1,az1]=cheby1(n,rp,wp/pi,'stop');
    %查看设计滤波器的曲线
    [h,w]=freqz(bz1,az1,256,Fs);
    h=20*log10(abs(h));
    figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    y=filter(bz1,az1,x);
    end
    
    带阻滤波器案例设计:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %带阻滤波器案例设计测试程序
    clear all; clc; close all;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % f1=300;f3=500;%通带截止频率上下限
    % fsl=200;fsh=600;%阻带截止频率上下限
    % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    % Fs=2000;%采样率
    fs=1000;%采样频率
    t=(1:fs)/fs;%采样时间
    ff1=100;%信号频率100,400,700
    ff2=150;
    ff3=200;
    x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t)+sin(2*pi*ff3*t);%带测试的x序列
    figure;
    subplot(211);plot(t,x);%原序列图谱。
    subplot(212);plot_fft(x,fs,1);%原图像对应频谱
    %带通测试
    y=bands(x,110,190,140,160,0.1,30,fs);%带通滤波器函数测试。
    figure;
    subplot(211);plot(t,y);%带通滤波器输出序列图谱
    subplot(212);plot_fft(y,fs,1);%带通滤波器输出序列对应频谱
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBhilewO-1572535339802)(G:\研究生\项目小组任务\程序设计\第三周任务\bands.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FiaUXpQ-1572535339806)(G:\研究生\项目小组任务\程序设计\第三周任务\bands_band.bmp)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTmY1TFf-1572535339810)(G:\研究生\项目小组任务\程序设计\第三周任务\bands_result.bmp)]

    总结:

    ​ 通过简单测试,以上三幅图分别是滤波前后的时频图,滤波器的滤波特性曲线图。通过图可以看出带通滤波器成功去除了150Hz的带通频带内成分而把需要的频带成分留下来。实现带阻滤波器基本功能。

    展开全文
  • 滤波器设计

    2012-07-06 23:59:46
    滤波器设计,讲了最常用的集中滤波器的设计,每一种都很详细
  • ADI-滤波器设计1.rar linear-滤波器设计2.rar MAX260V1-滤波器设计3.rar Microchip-滤波器设计4.rar Nuhertz-滤波器设计5.rar Schematica-滤波器设计6.rar TI-滤波器设计7.rar
  • 巴特沃斯滤波器(1)低通滤波器(2)高通滤波器(3)带通滤波器(4)带阻滤波器3. 契比雪夫I型滤波器(1)低通滤波器(2)高通滤波器(3)带通滤波器(4)带阻滤波器4. 贝塞尔滤波器5. MATLAB中Filter type类型表示...

    声明:本文内容整理自网络,仅作为博主学习笔记记录,各部分版权归原作者所有。

    在这里插入图片描述
    几个概念理解:

    在这里插入图片描述
    MATLAB辅助滤波器设计有多种方法:

    • fdatool工具箱,参考这篇文章
    • 本文使用的方法

    1. 三种滤波器的对比

    在这里插入图片描述
    在这里插入图片描述

    传送门:巴特沃斯、切比雪夫、贝塞尔滤波器的比较

    2. 巴特沃斯滤波器

    测试用原始信号设置

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %  ButterWorthFilter.m
    %  巴特沃夫滤波器的设计
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    clear;
    close all;
    clc;
     
    fs = 1000; %Hz 采样频率
    Ts = 1/fs;
    N  = 1000; %序列长度
    t = (0:N-1)*Ts;
    delta_f = 1*fs/N;
    f1 = 50;
    f2 = 100;
    f3 = 200;
    f4 = 400;
    x1 = 2*0.5*sin(2*pi*f1*t);
    x2 = 2*0.2*sin(2*pi*f2*t);
    x3 = 2*0.3*sin(2*pi*f3*t);
    x4 = 2*0.6*sin(2*pi*f4*t);
    x = x1 + x2 + x3 + x4; %待处理信号由四个分量组成
     
    X = fftshift(abs(fft(x)))/N;
    X_angle = fftshift(angle(fft(x)));
    f = (-N/2:N/2-1)*delta_f;
     
    figure(1);
    subplot(3,1,1);
    plot(t,x);
    title('原信号');
    subplot(3,1,2);
    plot(f,X);
    grid on;
    title('原信号频谱幅度特性');
    subplot(3,1,3);
    plot(f,X_angle);
    title('原信号频谱相位特性');
    grid on;
    

    (1)低通滤波器

    [B,A] = butter(N,Wn,'low')
    

    设计案例:

    %设计一个巴特沃夫低通滤波器,要求把50Hz的频率分量保留,其他分量滤掉
    
    wp = 65/(fs/2);  %通带截止频率,50~100中间的值,并对其归一化
    ws = 85/(fs/2);  %阻带截止频率,50~100中间的值,并对其归一化
    alpha_p = 3; %通带允许最大衰减为  db
    alpha_s = 20;%阻带允许最小衰减为  db
    
    %获取阶数和截止频率
    [ N1 wc1 ] = buttord( wp , ws , alpha_p , alpha_s);
    
    %获得转移函数系数
    [ b a ] = butter(N1,wc1,'low');
    
    %滤波
    filter_lp_s = filter(b,a,x);
    X_lp_s = fftshift(abs(fft(filter_lp_s)))/N;
    X_lp_s_angle = fftshift(angle(fft(filter_lp_s)));
    figure(2);
    freqz(b,a); %滤波器频谱特性
    figure(3);
    subplot(3,1,1);
    plot(t,filter_lp_s);
    grid on;
    title('低通滤波后时域图形');
    subplot(3,1,2);
    plot(f,X_lp_s);
    title('低通滤波后频域幅度特性');
    subplot(3,1,3);
    plot(f,X_lp_s_angle);
    title('低通滤波后频域相位特性');
    

    (2)高通滤波器

    [B,A] = butter(N,Wn,'high')
    

    设计案例:

    %设计一个高通滤波器,要求把400Hz的频率分量保留,其他分量滤掉
    wp = 350/(fs/2);  %通带截止频率,200~400中间的值,并对其归一化
    ws = 380/(fs/2);  %阻带截止频率,200~400中间的值,并对其归一化
    alpha_p = 3; %通带允许最大衰减为  db
    alpha_s = 20;%阻带允许最小衰减为  db
    
    %获取阶数和截止频率
    [ N2 wc2 ] = buttord( wp , ws , alpha_p , alpha_s);
    
    %获得转移函数系数
    [ b a ] = butter(N2,wc2,'high');
    
    %滤波
    filter_hp_s = filter(b,a,x);
    X_hp_s = fftshift(abs(fft(filter_hp_s)))/N;
    X_hp_s_angle = fftshift(angle(fft(filter_hp_s)));
    figure(4);
    freqz(b,a); %滤波器频谱特性
    figure(5);
    subplot(3,1,1);
    plot(t,filter_hp_s);
    grid on;
    title('高通滤波后时域图形');
    subplot(3,1,2);
    plot(f,X_hp_s);
    title('高通滤波后频域幅度特性');
    subplot(3,1,3);
    plot(f,X_hp_s_angle);
    title('高通滤波后频域相位特性');
    
    

    (3)带通滤波器

    % [B,A] = butter(N,Wn)
    
    fs = 1000 ; %信号的采样频率
    wp=[8 30]*2/fs; %通带边界频率 ,单位为rad/s
    ws=[7 32]*2/fs; %阻带边界频率 ,单位为rad/s
    Rp=1;           %通带最大波纹度 ,单位dB (不要太小)
    Rs=30;          %表示阻带最小衰减,单位dB
    [N,Wn]=buttord(Wp,Ws,Rp,Rs);%巴特沃斯数字滤波器的阶数n和-3dB归一化截止频率Wn
     
    [B,A]=butter(N,Wn);%得到n阶巴特沃斯滤波的分子分母
    dataOut = filter(B,A,dataIn);
    

    设计案例:

    %设计一个带通滤波器,要求把50Hz和400Hz的频率分量滤掉,其他分量保留
    wp = [65 385 ] / (fs/2);  %通带截止频率,50~100200~400中间各取一个值,并对其归一化
    ws = [75 375 ] / (fs/2);  %阻带截止频率,50~100200~400中间各取一个值,并对其归一化
    alpha_p = 3; %通带允许最大衰减为  db
    alpha_s = 20;%阻带允许最小衰减为  db
    
    %获取阶数和截止频率
    [ N3 wn ] = buttord( wp , ws , alpha_p , alpha_s);
    
    %获得转移函数系数
    [ b a ] = butter(N3,wn,'bandpass');
    
    %滤波
    filter_bp_s = filter(b,a,x);
    X_bp_s = fftshift(abs(fft(filter_bp_s)))/N;
    X_bp_s_angle = fftshift(angle(fft(filter_bp_s)));
    figure(6);
    freqz(b,a); %滤波器频谱特性
    figure(7);
    subplot(3,1,1);
    plot(t,filter_bp_s);
    grid on;
    title('带通滤波后时域图形');
    subplot(3,1,2);
    plot(f,X_bp_s);
    title('带通滤波后频域幅度特性');
    subplot(3,1,3);
    plot(f,X_bp_s_angle);
    title('带通滤波后频域相位特性');
    
    

    (4)带阻滤波器

    [B,A] = butter(N,Wn,'stop')
    

    设计案例:

    %设计一个带阻滤波器,要求把50Hz和400Hz的频率分量保留,其他分量滤掉
    wp = [65 385 ] / (fs/2);  %通带截止频率?,50~100200~400中间各取一个值,并对其归一化
    ws = [75 375 ] / (fs/2);  %阻带截止频率?,50~100200~400中间各取一个值,并对其归一化
    alpha_p = 3; %通带允许最大衰减为  db
    alpha_s = 20;%阻带允许最小衰减为  db
    %获取阶数和截止频率
    [ N4 wn ] = buttord( wp , ws , alpha_p , alpha_s);
    %获得转移函数系数
    [ b a ] = butter(N4,wn,'stop');
    %滤波
    filter_bs_s = filter(b,a,x);
    X_bs_s = fftshift(abs(fft(filter_bs_s)))/N;
    X_bs_s_angle = fftshift(angle(fft(filter_bs_s)));
    figure(8);
    freqz(b,a); %滤波器频谱特性
    figure(9);
    subplot(3,1,1);
    plot(t,filter_bs_s);
    grid on;
    title('带阻滤波后时域图形');
    subplot(3,1,2);
    plot(f,X_bs_s);
    title('带阻滤波后频域幅度特性');
    subplot(3,1,3);
    plot(f,X_bs_s_angle);
    title('带阻滤波后频域相位特性');
    
    

    3. 契比雪夫I型滤波器

    在这里插入图片描述

    (1)低通滤波器

    fs = 1000;   % Hz采样频率
    wp = 55/(fs/2);  %通带截止频率,50~100中间的值,并对其归一化
    ws = 90/(fs/2);  %阻带截止频率,50~100中间的值,并对其归一化
    Rp = 3;           %通带允许最大衰减为 db
    Rs = 40;          %阻带允许最小衰减为 db
    [n,Wn]=cheb1ord(Wp,Ws,Rp,Rs); % 获取阶数和截止频率
    [b,a]=cheby1(n,Rp,Wn, 'low');  %获得转移函数系数
    dataOut = filter(b,a,dataIn);          %信号滤波运算
    
    function y=lowp(x,f1,f3,rp,rs,Fs)
    	%低通滤波
    	%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    	%即,f1,f3的值都要小于 Fs/2
    	%x:需要带通滤波的序列
    	% f 1:通带截止频率
    	% f 3:阻带截止频率
    	%rp:边带区衰减DB数设置
    	%rs:截止区衰减DB数设置
    	%FS:序列x的采样频率
    	% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    	% Fs=2000;%采样率
    	%
    	wp=2*pi*f1/Fs;
    	ws=2*pi*f3/Fs;
    	% 设计切比雪夫滤波器;
    	[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    	[bz1,az1]=cheby1(n,rp,wp/pi);
    	%查看设计滤波器的曲线
    	[h,w]=freqz(bz1,az1,256,Fs);
    	h=20*log10(abs(h));
    	figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    	%
    	y=filter(bz1,az1,x);%对序列x滤波后得到的序列y
    end
    

    (2)高通滤波器

    function y=highp(x,f1,f3,rp,rs,Fs)
    	%高通滤波
    	%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
    	%即,f1,f3的值都要小于 Fs/2
    	%x:需要带通滤波的序列
    	% f 1:通带截止频率
    	% f 2:阻带截止频率
    	%rp:边带区衰减DB数设置
    	%rs:截止区衰减DB数设置
    	%FS:序列x的采样频率
    	% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    	% Fs=2000;%采样率
    	%
    	wp=2*pi*f1/Fs;
    	ws=2*pi*f3/Fs;
    	% 设计切比雪夫滤波器;
    	[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
    	[bz1,az1]=cheby1(n,rp,wp/pi,'high');
    	
    	%查看设计滤波器的曲线
    	[h,w]=freqz(bz1,az1,256,Fs);
    	h=20*log10(abs(h));
    	figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    	y=filter(bz1,az1,x);
    end
    

    (3)带通滤波器

    function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs)
    	%带通滤波
    	%使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    	%即,f1,f3,fs1,fsh,的值小于 Fs/2
    	%x:需要带通滤波的序列
    	% f 1:通带左边界
    	% f 3:通带右边界
    	% fs1:衰减截止左边界
    	% fsh:衰变截止右边界
    	%rp:边带区衰减DB数设置
    	%rs:截止区衰减DB数设置
    	%FS:序列x的采样频率
    	% f1=300;f3=500;%通带截止频率上下限
    	% fsl=200;fsh=600;%阻带截止频率上下限
    	% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    	% Fs=2000;%采样率
    	%
    	wp1=2*pi*f1/Fs;
    	wp3=2*pi*f3/Fs;
    	wsl=2*pi*fsl/Fs;
    	wsh=2*pi*fsh/Fs;
    	wp=[wp1 wp3];
    	ws=[wsl wsh];
    	%
    	% 设计切比雪夫滤波器;
    	[n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    	[bz1,az1]=cheby1(n,rp,wp/pi);
    	%查看设计滤波器的曲线
    	[h,w]=freqz(bz1,az1,256,Fs);
    	h=20*log10(abs(h));
    	figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    	y=filter(bz1,az1,x);
    end
    

    (4)带阻滤波器

    function y=bands(x,f1,f3,fsl,fsh,rp,rs,Fs)
    	%带阻滤波
    	%使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
    	%即,f1,f3,fs1,fsh,的值小于 Fs/2
    	%x:需要带通滤波的序列
    	% f 1:通带左边界
    	% f 3:通带右边界
    	% fs1:衰减截止左边界
    	% fsh:衰变截止右边界
    	%rp:边带区衰减DB数设置
    	%rs:截止区衰减DB数设置
    	%FS:序列x的采样频率
    	% f1=300;f3=500;%通带截止频率上下限
    	% fsl=200;fsh=600;%阻带截止频率上下限
    	% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
    	% Fs=2000;%采样率
    	%
    	wp1=2*pi*f1/Fs;
    	wp3=2*pi*f3/Fs;
    	wsl=2*pi*fsl/Fs;
    	wsh=2*pi*fsh/Fs;
    	wp=[wp1 wp3];
    	ws=[wsl wsh];
    	%
    	% 设计切比雪夫滤波器;
    	[n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
    	[bz1,az1]=cheby1(n,rp,wp/pi,'stop');
    	%查看设计滤波器的曲线
    	[h,w]=freqz(bz1,az1,256,Fs);
    	h=20*log10(abs(h));
    	figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
    	y=filter(bz1,az1,x);
    end
    

    4. 贝塞尔滤波器

    % [b,a] = besself(n,Wn)                   %低通滤波器(Wn为二元向量时,为带通)
                                               % Wn是一个实际频率值,不是相对量
    
    [b,a] = besself(n,Wn,’ftype’);        % ftype类型low,hight,stop
    dataOut = filter(b,a,dataIn);          %信号滤波运算
    

    5. MATLAB中Filter type类型表示

    • 'low'
    • 'bandpass'
    • 'high'
    • 'stop'

    6. 滤波器的离散化

    传送门:点这里~
    在这里插入图片描述
    在这里插入图片描述


    参考文献:

    • https://blog.csdn.net/xiaokun19870825/article/details/78777325
    • https://blog.csdn.net/cqfdcw/article/details/84939698
    • https://www.mathworks.com/help/signal/ref/cheby1.html
    • https://www.mathworks.com/help/signal/ref/cheby1.html#bucqk89-ftype
    • https://www.mathworks.com/help/matlab/ref/filter.html
    • http://blog.sina.com.cn/s/blog_49c02a8c0100yszh.html
    • https://blog.csdn.net/zhoufan900428/article/details/8969470
    展开全文
  • [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)

    万次阅读 多人点赞 2019-11-16 00:54:00
    [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) ​ IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器。但对于FIR滤波器来说,设计方法的关键要求之一就是保证线性相位条件。而...
  • Ti经典的滤波器设计软件,基本上包括了所有的常用滤波器电路设计,包括低通、高通、带通、带阻全通等,滤波器类型可以有Bessel、Gaussian、Linear、Chebyshev等,滤波器参数可以根据带宽、增益、Q值等计算出电路的...
  • 工作中常用滤波器

    2017-04-09 22:17:41
    滤波器分为IIR和FIR滤波器,IIR为无限脉冲响应,FIR为有限脉冲响应。简单区分IIR和FIR滤波器的方法是:IIR滤波器跟前输出量有关,其计算公式右边含有前一项输出值:FIR跟前输出值无关,只跟输入量有关。在相同阶数下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,018
精华内容 4,807
关键字:

常用滤波器设计