引言

说实话我感觉自己滤波器不算学到位了,一般来说我是需要把整个过程都弄得非常清楚,但是这个模拟滤波器设计是真的麻烦,至少我现在不确定以后会从事DSP相关的内容,就没有对细节考量,但或许也没谁会对它去考量,因为真的挺麻烦的。

我这里说一些基本的,人都听得懂的知识点。首先IIR滤波器大家都知道,就是无限长脉冲序列滤波器。无限长是因为存在反馈,众所周知,存在反馈(负反馈,正反馈信号就不稳定了)系统更容易稳定,这个容易体现在滤波器的级数比较少,也就是说使用的元器件比较少,所以设计成本比较低,但是相位就不是线性的了。关于先行相位,看我后面FIR滤波器。

底下是我们作业,就是最基本的IIR滤波器的使用,写的应该很清楚了,需要的拿去用。

clc;
clear;
%% 参数确定
Wp=0.1*pi; %通带截至频率
Ws=0.4*pi; %阻带截止频率
ap=1; %通带最大衰减
as=25; %阻带最大衰减
fs=1; %采样频率%% 脉冲响应不变法+3dB通带截止频率
wp=Wp*fs;
ws=Ws*fs;
N=buttord(wp,ws,ap,as,'s');
wc=wp/(10^(0.1*ap)-1)^(1/2/N);
[b,a]=butter(N,wc,'s');
[c,d]=impinvar(b,a,fs);
w=linspace(0,pi,512);
h=freqz(c,d,w);
% 绘制幅度响应
subplot(2,2,1)
plot(w/pi,20*log10(abs(h)));
title('脉冲响应不变法+3dB通带截止频率')
grid;
w=[wp ws];
h=freqz(c,d,w);
% 输出参数
fprintf('脉冲响应不变法+3dB通带截止频率\n');
fprintf('ap=%.4f\t',-20*log10(abs(h(1))));
fprintf('as=%.4f\n',-20*log10(abs(h(2))));
fprintf('N= %.4f\t',N);
fprintf('wc=%.4f\n',wc);%% 脉冲响应不变法+3dB阻带截止频率
wp=Wp*fs;
ws=Ws*fs;
N=buttord(wp,ws,ap,as,'s');
wc=ws/(10^(0.1*as)-1)^(1/2/N);
[b,a]=butter(N,wc,'s');
[c,d]=impinvar(b,a,fs);
w=linspace(0,pi,512);
h=freqz(c,d,w);
% 绘制幅度响应
subplot(2,2,2)
plot(w/pi,20*log10(abs(h)));
title('脉冲响应不变法+3dB阻带截止频率')
grid;
w=[wp ws];
h=freqz(c,d,w);
% 输出参数
fprintf('脉冲响应不变法+3dB阻带截止频率\n');
fprintf('ap=%.4f\t',-20*log10(abs(h(1))));
fprintf('as=%.4f\n',-20*log10(abs(h(2))));
fprintf('N= %.4f\t',N);
fprintf('wc=%.4f\n',wc);%% 双线性变换法+3dB通带截止频率
wp=2*fs*tan(Wp/2);
ws=2*fs*tan(Ws/2);
N=buttord(wp,ws,ap,as,'s');
wc=wp/(10^(0.1*ap)-1)^(1/2/N);
[b,a]=butter(N,wc,'s');
[c,d]=bilinear(b,a,fs);
w=linspace(0,pi,512);
h=freqz(c,d,w);
% 绘制幅度响应
subplot(2,2,3)
plot(w/pi,20*log10(abs(h)));
title('双线性变换法+3dB通带截止频率')
grid;
w=[wp ws];
h=freqz(c,d,w);
% 输出参数
fprintf('双线性变换法+3dB通带截止频率\n');
fprintf('ap=%.4f\t',-20*log10(abs(h(1))));
fprintf('as=%.4f\n',-20*log10(abs(h(2))));
fprintf('N= %.4f\t',N);
fprintf('wc=%.4f\n',wc);%% 双线性变换法+3dB阻带截止频率
wp=2*fs*tan(Wp/2);
ws=2*fs*tan(Ws/2);
N=buttord(wp,ws,ap,as,'s');
wc=ws/(10^(0.1*as)-1)^(1/2/N);
[b,a]=butter(N,wc,'s');
[c,d]=bilinear(b,a,fs);
w=linspace(0,pi,512);
h=freqz(c,d,w);
% 绘制幅度响应
subplot(2,2,4)
plot(w/pi,20*log10(abs(h)));
title('双线性变换法+3dB阻带截止频率')
grid;
w=[wp ws];
h=freqz(c,d,w);
% 输出参数
fprintf('双线性变换法+3dB阻带截止频率\n');
fprintf('ap=%.4f\t',-20*log10(abs(h(1))));
fprintf('as=%.4f\n',-20*log10(abs(h(2))));
fprintf('N= %.4f\t',N);
fprintf('wc=%.4f\n',wc);

结果:

IIR滤波器设计代码(巴特沃斯+脉冲响应不变法/双线性变换法) Matlab代码相关推荐

  1. IIR滤波器设计(调用MATLAB IIR函数来实现)

    转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途 对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求甚解,也没用过. ...

  2. 基于MATLAB的IIR滤波器设计与实现

    基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的 ...

  3. 数字信号处理6:IIR滤波器设计

    IIR滤波器设计 文章目录 IIR滤波器设计 1. 简介 2. 设计步骤简明 3. 拉普拉斯变换和Z变换 3.1 拉普拉斯变换 3.2 Z变换 4. 双线性变换法 4.1 模拟域与数字域的映射 4.2 ...

  4. scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II )

    scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II ) 各种滤波接口 滤波器接口 含义 butt ...

  5. 滤波器基础05——巴特沃斯、切比雪夫与贝塞尔滤波器

    滤波器基础系列博客,传送门: 滤波器基础01--滤波器的种类与特性 滤波器基础02--滤波器的传递函数与性能参数 滤波器基础03--Sallen-Key滤波器.多反馈滤波器与Bainter陷波器 滤波 ...

  6. 基于FPGA的IIR滤波器设计

    基于FPGA的IIR滤波器设计,使用VHDL语言. 本设计是毕设,包括论文 下面是论文目录截图: 各模块VHDL程序 时序控制模块程序 library ieee; use ieee.std_logic ...

  7. 【音频处理】IIR滤波器设计(一)Biquad 滤波器

    系列文章目录 [音频处理]如何"认识"一个滤波器? [音频处理]IIR滤波器设计(一)Biquad 滤波器 [音频处理]IIR滤波器设计(二)模拟到数字 前言 在开始学习 IIR ...

  8. Matlab:序列分析法MATLAB代码

    Matlab:序列分析法MATLAB代码 目录 输出结果 设计代码 输出结果 更新-- 设计代码 ###下面所有带代码中的n值需要以自己输入的数据为准###1.简单一次滑动平均法预测MATLAB程序代 ...

  9. 一维数据中位值平均滤波法MATLAB代码

    一维数据中位值平均滤波法MATLAB代码 简介 中位值平均滤波法又称防脉冲干扰平均滤波法,是算术平均值滤波法和中值滤波法结合.可有效去除脉冲噪声. MATLAB程序 程序已封装成函数,可以直接调用. ...

最新文章

  1. django第三次(转自刘江)
  2. python全局变量定义_Python 3 实现定义跨模块的全局变量和使用
  3. 深入Java集合学习系列:TreeMap实现
  4. (转)Spring Boot 日志配置(超详细)
  5. 小米40W无线闪充今年商用:MIX 4首发?
  6. Springcloud 高效率本地加Redis双级缓存
  7. ETL的增量抽取机制
  8. GDAL插值使用示例
  9. SPSS 有调节的中介与有中介的调节【SPSS 042期】
  10. 程序转换实验程序流程图_智能化实验室 | # 自动智能化实验室的5大系统 #
  11. JDBC:java数据库连接对象
  12. 学习笔记之——LaTeX的使用
  13. C语言实现:素数的判断的多种方法
  14. genetic heterogeneity 遗传异质性
  15. 汇编语言-字符串大写转小写,小写转大写
  16. 华为手机桌面有计算机的数字,华为手机桌面上信息图标上显示的数字角标如何关闭...
  17. 微信游戏,微信小说系统域名防封是如何做到的
  18. 【HTML】input多行文本
  19. HTMLCSS学习笔记(二十四)——利用border属性制作太极图与哆啦A梦
  20. 为什么吃狗肉那么有争议?

热门文章

  1. 数据可视化,值得关注的30个技巧(建议收藏)
  2. DeepMind最新研究:AI击败了人类,设计了更好的经济机制
  3. Hick’s Law的公式
  4. C#winform画图简易制作
  5. linux下简单配置zlib软件
  6. java将实体数据导出到excel,压缩,删除等一系列~
  7. 大数据产品经理python_大数据岗位要求之数据产品经理
  8. 计算机组装与维护试题及答案
  9. php 开源图片管理系统,PicCMS 图片管理系统
  10. python爬取手机微信_Python爬取微信好友