- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于MATLAB实现滤波器设计
实验目的
熟悉使用MATLAB的语言特点以及各种功能。
熟悉MATLAB中各种信号的信号处理工具箱。
熟悉滤波器的设计方法原理以及步骤。
实验原理
MATLAB语言特点:
语言简洁紧凑,使用方便灵活,库函数极其丰富
运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力
MATLAB中的信号处理工具箱内容丰富,使用简便。在数字信号处理中常用的算法,如FFT,卷积,相关,滤波器设计,参数模型等,几乎都只用一条语句即可调用。数字信号处理常用的函数有波形的产生、滤波器的分析和设计、傅里叶变换、Z变换等,如:
波形产生:
sawtooth(锯齿波或三角波)Diric(Dirichlet或周期sinc函数)
rand(白噪声信号波形)square(方波)sinc(sinc或 函数)
chirp(chirp信号波形)
滤波器的分析:
abs(求幅值)angle(求相角)conv(求卷积)freqz(数字滤波器频率响应)impz(数字滤波器的冲击响应)zplane(数字系统零极点图)
IIR滤波器设计:
butter(巴特沃思数字滤波器)cheby1(切比雪夫I型)cheby2(切比雪夫II型)maxflat(最平滤波器)ellip(椭圆滤波器)yulewalk(递归数字滤波器)bilinear(双线性变换)impinvar(冲激响应不变法)
FIR滤波器设计:
triang(三角窗)blackman(布莱克曼窗boxcar(矩形窗)hamming(海明窗)
hanning(汉宁窗)kaiser(凯塞窗)fir1(基于窗函数法)fir2(基于频率抽样法)firrcos(上升余弦FIR滤波器设计法)intfilt(内插FIR滤波器设计法)
kaiserord(用Kaiser窗设计FIR滤波器的参数估计)
各种变换:
czt(线性调频Z变换)dct(离散余弦变换)fft(一维快速傅里叶变换)
fft2(二维快速傅里叶变换)idct(逆离散余弦变换)ifft(一维逆快速傅里叶变换)ifft2(二维逆快速傅里叶变换)hilbert(Hilbert变换)
IIR数字滤波器设计原理:
设计IIR数字滤波器一般采用脉冲响应不变法和双线性变换法。
1. 脉冲响应不变法的变换原理
从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应模仿模拟滤波器的冲击响应,即h(n)是ha(t)的采样值。
设T 为采样周期,变换过程:
如果模拟滤波器的系统函数只有单阶极点,且分母的阶数高于分子阶数,用脉冲响应不变法求数字滤波器的系统函数有简便方法:将 Ha(s) 展成部分分式的并联形式,再利用下述变换公式直接写出 H(z)
2. 双线性变换法的变换原理
(1)保证s平面压缩到s1平面的宽为2π/T 的横带内
(2)保证低频部分基本对应
设计模拟滤波器的系统函数Ha(s) 。将映射关系代入Ha(s)中得数字滤波器系统函数H(z)
1、用脉冲响应不变法设计
用脉冲响应不变法设计的m程序如下:
clear;close all;clc;
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;
W1p=fp/Fs*2; W1s=fs/Fs*2;
[N, Wn] = buttord(W1p, W1s, Rp, Rs, 's');
[z,p,k] = buttap(N);
[bp,ap] = zp2tf(z,p,k);
[bp,ap]=butter(N,1,'s’);
[bs,as] = lp2lp(bp,ap,Wn*pi*Fs);
[bz,az] = impinvar(bs,as,Fs);
sys=tf(bz,az,T)
[H,W]=freqz(bz,az,512,Fs);
plot(W,20*log10(abs(H)));
grid on;
2、用双线性变换法完成上述设计
如果用双线性变换法完成上述设计实例,归一化频率需预畸变处理,公式应修改为:
clear;close
all;clc;
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;
W1p=2*tan(2*pi*fp*T/2)/pi ;W1s=2*tan(2*pi*fs*T/2)/pi;
[N, Wn]
文档评论(0)