matlab 实现低通巴特沃斯滤波器、切比雪夫1型/2型滤波器 和 椭圆滤波器

本文介绍了如何使用MATLAB实现四种低通滤波器(巴特沃斯、切比雪夫I型、切比雪夫II型和椭圆滤波器),通过示例代码展示了滤波器的设计过程,并展示了频率响应的图形化展示。重点讲解了unwrap和freqs函数的使用以及参数设置对滤波特性的影响。
摘要由CSDN通过智能技术生成

下面的函数为四种低通滤波器的实现

function [b, a]=analogfile(Wp, Ws, alphamax, alphamin, Wmax, ind)
    if ind==1,
        [N,Wn]=buttord(Wp, Ws, alphamax, alphamin, 's');
        [b,a]=butter(N, Wn, 's');
    elseif ind==2,
        [N, Wn]=cheb1ord(Wp, Ws, alphamax, alphamin, 's');
        [b, a]=cheby1(N, alphamax, Wn, 's');
    elseif ind==3,
        [N, Wn]=cheb2ord(Wp, Ws, alphamax, alphamin, 's');
        [b, a]=cheby2(N, alphamin, Wn, 's');
    else
        [N, Wn]=ellipord(Wp, Ws, alphamax, alphamin, 's');
        [b, a]=ellip(N, alphamax, alphamin, Wn, 's');
    end
    
    W=0:0.001:Wmax;
    H=freqs(b, a, W);
    Hm=abs(H);
    Ha=unwrap(angle(H));
    
    N=length(W);
    alpha1=alphamax * ones(1, N);
    alpha2 = alphamin * ones(1, N);
    
    subplot(221);
    plot(W, Hm);
    grid;
    axis([0  Wmax  0  1.1*max(Hm)]);
    
    subplot(222);
    plot(W, Ha);
    grid;
    axis([0  Wmax   1.1*min(Ha)  1.1*max(Ha)]);
    
    subplot(223);
    splane(b, a);
    
    figure(1);
    subplot(224);
    plot(W, -20*log10(abs(H)));
    hold on;
    plot(W, alpha1, 'r', W, alpha2, 'r');
    grid;
    axis([0 max(W) -0.1 100]);
    hold off;
end

其中使用到了:
unwrap 函数,推荐阅读:matlab之unwrap函数
freqs 函数,推荐阅读: matlab freqz-m,Matlab函数freqs和freqz

函数调用

clear all; clf
alphamax=0.1;
alphamin=60;
Wp=10;
Ws=15;
Wmax=25;
ind=4;%指定滤波器的种类
[b, a]=analogfile(Wp, Ws, alphamax, alphamin, Wmax, ind);

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

在这里插入图片描述

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值