设计IIR滤波器,实现对存在加性干扰的时域离散信号进行滤波。

已知带加性干扰的信号用x(n)表示,x(n)=xs(n)+η(n),式中xs(n)是有用的信号,是一个0~0.2πrad的带限信号。η(n)是一个干扰信号,其频谱分布在0.3πrad以上。要求设计一个巴特沃斯IIR数字滤波器对信号x(n)进行滤波,将干扰η(n)滤除。要求在xs(n) 所在的通带内滤波器幅度平坦,在0.2πrad处幅度衰减不大于1dB,在噪声所在的0.3πrad 以上的频带内滤波器幅度衰减大于等于40 dB。

步骤:1.根据题目要求确定要设计的数字滤波器的技术指标(低通滤波器指标:wp=0.2πrad,ws=0.3πrad,αp=1dB,αs=40dB);

2. 用双线性变换法频率转换公式,将DF技术指标转换为巴特沃斯AF的技术指标;

3. 调用MATLAB函数buttord和butter,设计该模拟滤波器;

4. 根据1所确定的技术指标,调用MATLAB函数buttord和butter,直接设计数字滤波器,观察设计结果与上面用双线性变换法的设计结果是否相同。

5. 滤波仿真:调用MATLAB工具箱函数filter对下面给出的带加性干扰的信号x(n)进行滤波,观察滤波效果(绘制滤波前后信号的时域和频域波形)。a. 滤波仿真:调用MATLAB工具箱函数filter对下面给出的带加性干扰的信号进行滤波,观察滤波效果(绘制滤波前后信号的时域和频域波形)。

实验信号x(n)的128个样值:

-0.0289    0.3943    0.9965    1.1266    0.9995    1.0891    1.2262    1.0699

0.8990    0.7685    0.7844    0.9471    1.4317    1.6765    1.7629   -3.2903

3.4122    4.5403   -2.1667    -2.0584    4.6694    2.0368   -0.4864    0.1427

2.5652   -1.8980   -0.0527    -1.4730    2.7884   -6.4092    2.9084   -5.1428

1.5929    0.0014   -0.6010    -4.3059   -0.4518    1.9959   -3.3526    0.5745

-3.5487    0.5913   -0.2472    -1.5479   -2.4422    2.5066   -4.2421   -2.3588

3.8869   -3.9855    0.9583    -1.2164    3.7050    1.2411   -1.7249    0.9964

3.9695    1.3400   -3.5513    5.8552   -2.8092    2.6877    0.4444    3.5641

-2.3496    3.6065   -1.7598    1.4699    3.7201   -1.1626    2.5171   -1.8247

2.5076    2.5423   -0.1164    0.3413   -2.8366   -0.5732    1.1705   -1.1689

-1.8778   -2.8823    0.1312    0.1701   -0.3147   -3.2178   -0.2897   -0.2661

-2.6156    2.5836   -6.1123    0.3611    3.8320   -5.1405   -2.4962    1.3115

0.3410   -5.0227    2.5150   -2.2485    0.8696   -0.4257   -0.2326    5.2529

-1.1389   -1.0966    4.2358   -0.8846    1.3454    2.1462   -0.2605    1.8075

-1.5669    3.4374    2.4737   -0.9521    1.0952    0.2180    0.3156    4.8910

-1.5372    1.4585   -1.0904    5.1795   -1.9366   -1.0818    1.2667   -0.4268

MATLAB函数简介

● filter: 一维数字滤波器直接Ⅱ型实现函数。

yn=filter(B,A,xn) 按直接Ⅱ型实现结构对输入信号向量xn滤波,返回滤波器输出信号向量yn,调用参数B和A分别为滤波器系统函数分子和分母多项式系数向量。其实质是求解差分方程

A(1)y(n) = B(1)x(n) + B(2)x(n-1) + ... + B(M+1)x(n-M) -A(2)y(n-1) - ... -A(N+1)y(n-N)

如果A(1)不等于1时,则对系数关于A(1)归一化后计算输出信号y(n)。当A=1时对应FIRDF的直接Ⅱ型实现

● freqz: 求数字滤波器频率响应。

[H,W]=freqz(B,A,N) 计算出数字滤波器频率向应函数在[0,π]上的N点等间隔采样复数向量H和N个采样频率点向量W。调用参数B和A分别为滤波器系统函数分子和分母多项式系数向量。

[H,W] = freqz(B,A,N,'whole') 计算出数字滤波器频率向应函数在[0,2π]上的N点等间隔采样复数向量H和N个采样频率点向量W。

freqs:求模拟滤波器频率响应.请用help 命令查其功能和调用各式。

%用双线性变换法设计DF

T=1;Fs=1/T;%T=1s为方便起见

wpz=0.2;wsz=0.3;

%实验步骤c.d中涉及的程序

wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2);rp=1;rs=40;%化为模拟滤波器的指标

[N,wc]=buttord(wp,ws,rp,rs,'s');%设计该滤波器的过渡模拟滤波器

[B,A]=butter(N,wc,'s');

[Bz,Az]=bilinear(B,A,Fs);%用双线性变换法转换成数字滤波器

%实验步骤g中涉及的程序

[Nd,wdc]=buttord(wpz,wsz,rp,rs);%调用buttord和butter直接设计数字滤波器

[Bdz,Adz]=butter(Nd,wdc);

[Hz,wz]=freqz(Bz,Az);

[Hdz,wdz]=freqz(Bdz,Adz);

figure(1)

subplot(211);

plot(wz/pi,10*log(abs(Hz)));

xlabel('\omega/\pi'),ylabel('Magnitude/dB');grid on

title('双线性变换法的幅频响应')

subplot(212);

plot(wdz/pi,10*log(abs(Hdz)));

xlabel('\omega/\pi'),ylabel('Magnitude/dB');grid on

title('直接设计数字滤波器的相频响应');grid on

Bdz,Adz%调用buttord和butter直接设计数字滤波器的系统函数的分子分母多项式系数向量B和A

Bz,Az%双线性变换法数字滤波器系统函数的分子分母多项式系数向量B和A

N %输出阶数,与自己在c算出来的进行比较,说明是正确的

%%%%%%%g步骤结论%%%%%%

%二者所设计的滤波器的幅频响应基本一致,但是直接设计的滤波器的过渡带的斜率的绝对值比

%双线性的小,即双线性的幅频响应较好,而且在w=pi(高频)处没有抖动的波纹

%%%%%让信号通过滤波器

xn=[-0.0289 0.3943 0.9965 1.1266 0.9995 1.0891 1.2262 1.0699...

0.8990 0.7685 0.7844 0.9471 1.4317 1.6765 1.7629 -3.2903...

3.4122 4.5403 -2.1667 -2.0584 4.6694 2.0368 -0.4864 0.1427...

2.5652 -1.8980 -0.0527 -1.4730 2.7884 -6.4092 2.9084 -5.1428...

1.5929 0.0014 -0.6010 -4.3059 -0.4518 1.9959 -3.3526 0.5745...

-3.5487 0.5913 -0.2472 -1.5479 -2.4422 2.5066 -4.2421 -2.3588...

3.8869 -3.9855 0.9583 -1.2164 3.7050 1.2411 -1.7249 0.9964...

3.9695 1.3400 -3.5513 5.8552 -2.8092 2.6877 0.4444 3.5641...

-2.3496 3.6065 -1.7598 1.4699 3.7201 -1.1626 2.5171 -1.8247...

2.5076 2.5423 -0.1164 0.3413 -2.8366 -0.5732 1.1705 -1.1689...

-1.8778 -2.8823 0.1312 0.1701 -0.3147 -3.2178 -0.2897 -0.2661...

-2.6156 2.5836 -6.1123 0.3611 3.8320 -5.1405 -2.4962 1.3115...

0.3410 -5.0227 2.5150 -2.2485 0.8696 -0.4257 -0.2326 5.2529...

-1.1389 -1.0966 4.2358 -0.8846 1.3454 2.1462 -0.2605 1.8075...

-1.5669 3.4374 2.4737 -0.9521 1.0952 0.2180 0.3156 4.8910...

-1.5372 1.4585 -1.0904 5.1795 -1.9366 -1.0818 1.2667 -0.4268];

sigLength=length(xn);%信号长度

Y = fft(xn,sigLength);%做FFT变化

Pyy = Y.* conj(Y) / sigLength; %求出幅值

halflength=floor(sigLength/2);

f=Fs*(0:halflength)/sigLength;

y=filter(Bz,Az,xn);

k=fft(y); %滤波后的波形做离散傅里叶变换

w=2*[0:length(k)-1]/length(k);

figure(2);

subplot(211)

plot(f,Pyy(1:halflength+1))

xlabel('Frequency(Hz)'),ylabel('幅度')%画未经过滤波的频域波形

grid on

subplot(212)

plot(w,abs(k));

xlabel('w/pi')

ylabel('幅度')

title('IIR滤波器滤波后频谱'); %解调滤波后的频谱

grid on

xn0=ifft(y);%逆变换,恢复时域信号

xn0=abs(xn0)

figure(3)

subplot(211);

stem(xn0) %plot(xn0);

xlabel('Time(s)');

title('经过滤波器信号时域波形');

grid on

subplot(212);

stem(xn) %plot(xn0);

xlabel('Time(s)');

title('原始信号时域波形');

grid on

%%%%%%%h步骤的结论%%%%%%%%%

%无论是从时域还是频域都可以看出大于0..3的频率部分应经基本被滤除,效果较为理想

butter滤波器是iir吗_IIR数字滤波器的设计与滤波相关推荐

  1. butter滤波器是iir吗_如何快速设计一个IIR滤波器

    在文章如何快速设计一个FIR滤波器(一)以及如何快速设计一个FIR滤波器(二)等文章中,我们讨论了如何设计FIR(Finite Impulse Response Filter),FIR有很多优点,比如 ...

  2. butter滤波器是iir吗_如何快速设计应用一个IIR滤波器

    在小平:如何快速设计应用一个FIR滤波器 中,我们讨论了如何设计一个FIR滤波器,接下来我们介绍IIR滤波器.和设计FIR滤波器一样,我们可以粗略的设计IIR滤波器(幅频响应不精确,设计简单),也可以 ...

  3. butter滤波器是iir吗_IIR低通滤波器求改

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 clear;close all; fp=40;fs=150;Fs=1000;Rp=3;Rs=60;T=1/Fs; W1p=2*tan(2*pi*fp*T/ ...

  4. butter滤波器是iir吗_学习随笔之IIR滤波器与FIR滤波器

    学习随笔之IIR滤波器与FIR滤波器 IIR滤波器(Infinite Impulse Response Digital Filter无限冲击响应数字滤波器)与FIR滤波器(Finite Impulse ...

  5. butter滤波器是iir吗_MATLAB IIR滤波器设计函数buttord与butter

    (4)Ws -阻带截止频率 标量| 二元向量 阻带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample. 数据类型:单| 双 (5)Rp-通带纹波 ...

  6. iir滤波器的基本网络结构_IIR数字滤波器的基本结构详解.ppt

    IIR数字滤波器的基本结构详解 二.IIR数字滤波器的基本结构 1)系统的单位抽样相应h(n)无限长 IIR数字滤波器的特点: 3)存在输出到输入的反馈,递归型结构 2)系统函数H(z)在有限z平面( ...

  7. m基于Matlab的fir和iir数字滤波器的设计与仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 MATLAB系统供了许多工具箱(Toolbox),借助于信号处理工具箱(signal pro ...

  8. 基于matlab数字滤波器设计,基于MATLAB的FIR数字滤波器的设计

    摘 要 传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用.本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计 ...

  9. iir陷波滤波器 matlab,IIR数字滤波器设计50Hz陷波器(MATLAB代码)

    %% IIR陷波器设计 % 目的:设计一个陷波器阻带在50±1.5Hz以内,采样频率为400Hz的滤波器, % 并要求通带最大衰减为0.1dB,阻带最小衰减为60dB. clc; clear;clos ...

最新文章

  1. 推荐系统算法_机器学习和推荐系统(二)推荐算法简介
  2. Eclipse 中 Debug 模式跳转到 exitCurrentThread 的问题解决
  3. Kali Linux安装字典StarDict
  4. OpenCV计算机视觉编程攻略之用色调、饱和度和亮度表示颜色
  5. Flash常用快捷键大全 (hotkey)
  6. 手把手教学电瓶车进电梯检测、多类别车辆追踪、异常行为检测产业级应用
  7. python3爬虫(5)百度云盘暴力破解尝试
  8. python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单
  9. linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库
  10. docker 安装mysql5.6
  11. HTTP协议详细总结
  12. Qt环境搭建(Visual Studio)
  13. 学习残差神经网络(ResNet)
  14. 【异常】The field file exceeds its maximum permitted size of 1048576 bytes.
  15. DCDC和LDO原理和关键技术(学习笔记1-buck电路)
  16. 手机图形计算器matlab,图形计算器Mathlab
  17. 分布式系统三大指标:可扩展性、一致性、持久性
  18. (二)基于区块链的自动抽奖系统从0到1实现
  19. Windows系统下安装Cadence Sigrity 2022.1
  20. 如何在FPS游戏中快速实现简单的人体定位算法

热门文章

  1. J-web进阶-NPM包管理器
  2. C++ STL库 string类型常见操作
  3. 【我利用国庆时间肝了个游戏分享给大家play】
  4. 【毕业设计】 树莓派寝室宿舍门禁刷卡系统 - 物联网 单片机 嵌入式
  5. 怎么将png图片怎么转换成jpg格式
  6. 初学编程者之建议(-)
  7. 如何与技术领导沟通项目管理问题?
  8. c语言面试题 百度,2017百度C/C++开发工程师面试题
  9. python中随机种子_Pytorch随机种子
  10. 2分钟教你学会一键JS解密