当前位置:首页 >> 工学 >>

数字信号处理各章节重点知识的matlab实例


1 数字信号处理各章节重点知识的 matlab 实例

第 1,2 章 离散时间信号与系统
例 1-1 用 MATLAB 计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散 卷积。 解 MATLAB 程序如下: a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度');

图 1.1 给出了卷积结果的图形,求得的结果存放在数组 c 中为: {-2 -4 1 3 1 5 1 -3}。

例 1-2 用 MATLAB 计算差分方程

当输入序 列为 时的输出结果 。

解 MATLAB 程序如下: N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n');ylabel('幅度') 图 1.2 给出了该差分方程的前 41 个样点的输出,即该系统的单位 脉冲响应。

例 1-3 用 MATLAB 计算例 1-2 差分方程 例

所对 应的系统函数的 DTFT。 解 例 1-2 差分方程所对应的系统函数为:

其 DTFT 为

用 MATLAB 计算的程序如下: k=256; num=[0.8 -0.44 0.36 0.02]; den=[1 0.7 -0.45 -0.6]; w=0:pi/k:pi; h=freqz(num,den,w); subplot(2,2,1); plot(w/pi,real(h));grid title('实部') xlabel('\omega/\pi');ylabel('幅度') subplot(2,2,2); plot(w/pi,imag(h));grid title('虚部') xlabel('\omega/\pi');ylabel('Amplitude') subplot(2,2,3);

plot(w/pi,abs(h));grid title('幅度谱') xlabel('\omega/\pi');ylabel('幅值') subplot(2,2,4); plot(w/pi,angle(h));grid title('相位谱') xlabel('\omega/\pi');ylabel('弧度')

离散傅里叶变换及其快速算法 第 3、4 章 离散傅里叶变换及其快速算法 、
例 2-1 对连续的单一频率周期信号, 按采样频率 长度 N 分别选 N =20 和 N =16,观察其 DFT 结果的幅度谱。 解 此时离散序列 ,即 k=8。用 MATLAB 计 采样,截取

算并作图,函数 fft 用于计算离散傅里叶变换 DFT,程序如下: k=8; n1=[0:1:19]; xa1=sin(2*pi*n1/k); subplot(2,2,1) plot(n1,xa1) xlabel('t/T');ylabel('x(n)'); xk1=fft(xa1);xk1=abs(xk1); subplot(2,2,2) stem(n1,xk1) xlabel('k');ylabel('X(k)'); n2=[0:1:15]; xa2=sin(2*pi*n2/k); subplot(2,2,3) plot(n2,xa2) xlabel('t/T');ylabel('x(n)'); xk2=fft(xa2);xk2=abs(xk2); subplot(2,2,4) stem(n2,xk2)

xlabel('k');ylabel('X(k)');

计算结果示于图 2.1,(a)和(b)分别是 N=20 时的截取信号和 DFT 结果,由 于截取了两个半周期,频谱出现泄漏;(c) 和(d) 分别是 N=16 时的截取信号和 DFT 结果,由于截取了两个整周期,得到单一谱线的频谱。上述频谱的误差主要 是由于时域中对信号的非整周期截断产生的频谱泄漏。

例 2-2 用 FFT 计算两个序列

的互相关函数



解 用 MATLAB 计算程序如下:

x=[1 3 -1 1 2 3 3 1]; y=[2 1 -1 1 2 0 -1 3]; k=length(x); xk=fft(x,2*k);

yk=fft(y,2*k); rm=real(ifft(conj(xk).*yk)); rm=[rm(k+2:2*k) rm(1:k)]; m=(-k+1):(k-1); stem(m,rm) xlabel('m'); ylabel('幅度');
其计算结果如图 2.2 所示。

例 2-3 计算两个序列的的互相关函数,其中 x(n)={2 3 5 2 1 –1 0 0 12 3 5 3 0 –1 –2 0 1 2} y(n)=x(n-4)+e(n), e(n)为一随机噪声, MATLAB 中可以用随机函数 rand 在 产生 解 用 MATLAB 计算程序如下: x=[2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]; y=[0 0 0 0 2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]; k=length(y); e=rand(1,k)-0.5; y=y+e; xk=fft(x,2*k);

yk=fft(y,2*k); rm=real(ifft(conj(xk).*yk)); rm=[rm(k+2:2*k) rm(1:k)]; m=(-k+1):(k-1); stem(m,rm) xlabel('m'); ylabel('幅度'); 计算结果如图 2.3(a), 我们看到最大值出现在 m=4 处, 正好是 y(n)对于 x(n) 的延迟。2. 3(b)是 x(n)的自相关函数,他和 y(n)的区别除时间位置外,形状也 略不同,这是由于 y(n)受到噪声的干扰。

无限长单位脉冲响应(IIR)滤波器的设计方法 第 5 章 无限长单位脉冲响应 滤波器的设计方法

例 3-1 设采样周期 T=250s(采样频率 fs =4kHz),用脉冲响应不变法 和双线性变换法设计一个三阶巴特沃兹滤波器,其 3dB 边界频率为 fc =1kHz。 [B,A]=butter(3,2*pi*1000,'s'); [num1,den1]=impinvar(B,A,4000); [h1,w]=freqz(num1,den1); [B,A]=butter(3,2/0.00025,'s'); [num2,den2]=bilinear(B,A,4000); [h2,w]=freqz(num2,den2); f=w/pi*2000; plot(f,abs(h1),'-.',f,abs(h2),'-'); grid; xlabel('频率/Hz ')

ylabel('幅值/dB')

程序中第一个 butter 的边界频率 2π×1000,为脉冲响应不变法原型低通 滤波器的边界频率;第二个 butter 的边界频率 2/T=2/0.00025,为双线性 变换法原型低通滤波器的边界频率.图 3.1 给出了这两种设计方法所得到的频响, 虚线为脉冲响应不变法的结果;实线为双线性变换法的结果。脉冲响应不变法由 于混叠效应,使得过渡带和阻带的衰减特性变差,并且不存在传输零点。同时, 也看到双线性变换法,在 z=-1 即ω=π或 f=2000Hz 处有一个三阶传输零点,这 个三阶零点正是模拟滤波器在Ω=∞处的三阶传输零点通过映射形成的。

例 3-2 设计一数字高通滤波器,它的通带为 400~500Hz,通带内容许 有 0.5dB 的波动,阻带内衰减在小于 317Hz 的频带内至少为 19dB,采样频率为 1,000Hz。

wc=2*1000*tan(2*pi*400/(2*1000));

wt=2*1000*tan(2*pi*317/(2*1000)); [N,wn]=cheb1ord(wc,wt,0.5,19,'s'); [B,A]=cheby1(N,0.5,wn,'high','s'); [num,den]=bilinear(B,A,1000); [h,w]=freqz(num,den); f=w/pi*500; plot(f,20*log10(abs(h)));

axis([0,500,-80,10]); grid; xlabel('') ylabel('幅度/dB') 图 3.2 给出了 MATLAB 计算的结果, 可以看到模拟滤波器在Ω=∞处的三阶零点 通过高通变换后出现在ω=0(z=1)处,这正是高通滤波器所希望得到的。

例 3-3 设计一巴特沃兹带通滤波器, 其3dB 边界频率分别为 f2=110kHz 和 f1=90kHz, 在阻带 f3 = 120kHz 处的最小衰减大于10dB, 采样频率 fs=400kHz。

w1=2*400*tan(2*pi*90/(2*400)); w2=2*400*tan(2*pi*110/(2*400)); wr=2*400*tan(2*pi*120/(2*400)); [N,wn]=buttord([w1 w2],[0 wr],3,10,'s'); [B,A]=butter(N,wn,'s'); [num,den]=bilinear(B,A,400); [h,w]=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h))); axis([40,160,-30,10]); grid; xlabel('频率/kHz')

ylabel('幅度/dB') 图 3.3 给出了 MATLAB 计算的结果,可以看出数字滤波器将无穷远点的二阶零 点映射为 z=±1 的二阶零点,数字带通滤波器的极点数是模拟低通滤波器的极点 数的两倍。

例 3-4 一数字滤波器采样频率 fs = 1kHz,要求滤除 100Hz 的干扰,其3 dB 的边界频率为 95Hz 和 105Hz,原型归一化低通滤波器为

w1=95/500; w2=105/500; [B,A]=butter(1,[w1, w2],'stop'); [h,w]=freqz(B,A); f=w/pi*500; plot(f,20*log10(abs(h))); axis([50,150,-30,10]); grid; xlabel('频率/Hz')

ylabel('幅度/dB')

图 3.4 为 MATLAB 的计算结果

有限长单位脉冲响应(FIR) (FIR)滤波器的设计方法 第 5 章 有限长单位脉冲响应(FIR)滤波器的设计方法
例 4.1 带边界频率 用凯塞窗设计一 FIR 低通滤波器,低通边界频率 ,阻带衰减 不小于 50dB。 ,阻

解 首先由过渡带宽和阻带衰减

来决定凯塞窗的 N 和

图 4.1 给出了以上设计的频率特性,(a) 为 N=30 直接截取的频率特性(b)为 凯塞窗设计的频率特性。凯塞窗设计对应的 MATLAB 程序为: wn=kaiser(30,4.55); nn=[0:1:29]; alfa=(30-1)/2;

hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa)); h=hd.*wn'; [h1,w1]=freqz(h,1); plot(w1/pi,20*log10(abs(h1))); axis([0,1,-80,10]); grid; xlabel('归一化频率/π') ylabel('幅度/dB')

设计一个线性相位低通 FIR 数字滤波器, 例 4-2 利用雷米兹交替算法, 其指标为: 通带边界频率 fc=800Hz, 阻带边界 fr=1000Hz, 通带波动 阻 带最小衰减 At=40dB,采样频率 fs=4000Hz。 解

在 MATLAB 中可以用 remezord 和 remez 两个函数设计, 其结果如图 4.2, MATLAB 程序如下: fedge=[800 1000]; mval=[1 0]; dev=[0.0559 0.01]; fs=4000; [N,fpts,mag,wt]=remezord(fedge,mval,dev,fs); b=remez(N,fpts,mag,wt); [h,w]=freqz(b,1,256); plot(w*2000/pi,20*log10(abs(h)));

grid; xlabel('频率/Hz') ylabel('幅度/dB')

函数 remezord 中的数组 fedge 为通带和阻带边界频率, 数组 mval 是两 个边界处的幅值,而数组 dev 是通带和阻带的波动,fs 是采样频率单位为 Hz。

第 6 章 数字信号处理系统的实现
例 5-1 求下列直接型系统函数的零、极点,并将它转换成二阶节形式

解 用 MATLAB 计算程序如下: num=[1 -0.1 -0.3 -0.3 -0.2]; den=[1 0.1 0.2 0.2 0.5]; [z,p,k]=tf2zp(num,den); m=abs(p); disp('零点');disp(z); disp('极点');disp(p); disp('增益系数');disp(k); sos=zp2sos(z,p,k); disp('二阶节');disp(real(sos)); zplane(num,den) 输入到“num”和“den”的分别为分子和分母多项式的系数。计算求得零、 极点增益系数和二阶节的系数: 零点 0.9615 -0.5730 -0.1443 + 0.5850i -0.1443 - 0.5850i

极点 0.5276 + 0.6997i 0.5276 - 0.6997i -0.5776 + 0.5635i -0.5776 - 0.5635i

增益系数 1

二阶节 1.0000 1.0000 -0.3885 0.2885 -0.5509 0.3630 1.0000 1.0000 1.1552 -1.0552 0.6511 0.7679

系统函数的二阶节形式为:

极点图见图 5.1。

例 5-2 分析五阶椭圆低通滤波器的量化效应,其截止频率为 0.4 , 通带纹波为 0.4dB,最小的阻带衰减为 50dB。对滤波器进行截尾处理时,使用函 数 a2dT.m.。 解 用以下 MATLAB 程序分析量化效应 clf; [b,a]=ellip(5,0.4,50,0.4); [h,w]=freqz(b,a,512);

g=20*log10(abs(h)); bq=a2dT(b,5); aq=a2dT(a,5); [hq,w]=freqz(bq,aq,512); gq=20*log10(abs(hq)); plot(w/pi,g,'b',w/pi,gq,'r:'); grid; axis([0 1 -80 5]); xlabel('\omega/\pi'); ylabel('Gain, dB'); legend('量化前','量化后'); figure [z1,p1,k1] = tf2zp(b,a); [z2,p2,k2] = tf2zp(bq,aq); zplaneplot([z1,z2],[p1,p2],{'o','x','*','+'}); legend('量化前的零点','量化后的零点','量化前的极点',' 量化后的极点');

图 5.1(a)表示系数是无限精度的理想滤波器的频率响应(以实线表示)以 及当滤波器系数截尾到 5 位时的频率响应(以短线表示)。由图可知,系数量化 对频带的边缘影响较大,经系数量化后,增加了通带的波纹幅度,减小了过渡带 宽,并且减小了最小的阻带衰减。 图 5. 1(b)给出了系数量化以前和系数量化以后的椭圆低通滤波器的零极 点位置。由图可知,系数的量化会使零极点的位置与它们的理想的标称位置相比 发生显著的改变。在这个例子中,靠近虚轴的零点的位置变动最大,并且移向靠 它最近的极点的位置。只要对程序稍作改变就可以分析舍入量化的影响。

为了研究二进制数量化效应对数字滤波器的影响,首先需要将十进制表示的 滤波器系数转换成二进制数并进行量化, 二进制数的量化既可以通过截尾法也可 以通过舍入法实现。我们提供了如下的两个 MATLAB 程序:a2dT.m 和 a2dR.m, 量化的 这两段程序分别将向量 d 中的每一个数按二进制数进行截尾或舍入量化, 精度是小数点以后保留 b 位,量化后返回的向量为 beq。

function beq = a2dT(d,b) % beq = a2dT(d,b) 将十进制数利用截尾法得到 b 位的二进制数, %然后将该二进制数再转换为十进制数 m=1; d1=abs(d); while fix(d1)>0 d1=abs(d)/(2^m); m=m+1; end

beq=fix(d1*2^b); beq=sign(d).*beq.*2^(m-b-1);

function beq=a2dR(d,b) % beq=a2dR(d,b)将十进制数利用舍入法得到 b 位的二进制数 %然后将该二进制数再转换为十进制数 m=1; d1=abs(d); while fix(d1)>0 d1=abs(d)/(2^m); m=m+1; end beq=fix(d1*2^b+.5); beq=sign(d).*beq.*2^(m-b-1);

第 7 章 多采样率信号处理
,信号频率为 0.042 的正弦信 例 7-1 在时域上显示一个 号,然后以抽取因子 3 降采样率,并在时域上显示相应的结果,比较两者在时域 上的特点。 解 用 MATLAB 计算程序如下: M=3; %down-sampling factor=3; fo=0.042;%signal frequency=0.042; %generate the input sinusoidal sequence n=0:N-1; m=0:N*M-1; x=sin(2*pi*fo*m); %generate the down-sampling squence y=x([1:M:length(x)]); subplot(2,1,1) stem(n,x(1:N)); title('输入序列'); xlabel('时间/n'); ylabel('幅度'); subplot(2,1,2) stem(n,y); title(['输出序列,抽取因子为',num2str(M)]); xlabel('时间/n'); ylabel('幅度');

图 7.1

,信号频率为 0.042

的正弦信号和降采样率后的情



例 7-2 用汉明窗设计一长度为 32 的线性相位 QMF 滤波器组。 解 采用 MATLAB 设计,调用 fir2 函数设计公共低通滤波器,参数缺省即为 汉明窗,程序如下: b1=fir2(31,[0,0.4,0.5,0.55,0.6,1],[1,1,1,0.06,0,0]); for k=1:32 end [H1z,w]=freqz(b1,1,256); h1=abs(H1z); g1=20*log10(h1); [H2z,w]=freqz(b2,1,256); h2=abs(H2z); g2=20*log10(h2); figure(1); plot(w/pi,g1,'-',w/pi,g2,'--'); b2(k)=((-1)^(k-1))*b1(k);

axis([0,1,-100,10]); grid xlabel('\omega/\pi');ylabel('幅度,dB'); sum=h1.*h1+h2.*h2; d=10*log10(sum); figure(2) plot(w/pi,d);grid; xlabel('\omega/\pi');ylabel('误差,dB'); axis([0,1,-0.3,0.3]);

图 7.2(a)是一个 N=32 的汉明窗设计结果,图中实线表示 的低通频响,虚线表示它的镜像 计方法的分析/综合滤波器组的整个频响 重建误差小于±0.05dB。由于汉明窗设 计的频 = +

=

。图 7.2 (b)是基于这种设 。从这个图可见,

率响应在通带中近乎是平坦的, 因此最大重建误差发生在这个滤波器的通带边界 和过渡带内。


相关文章:
数字信号处理各章节重点知识的matlab实例1.pdf
数字信号处理各章节重点知识的matlab实例1 - 1 数字信号处理各章节重点知识的 matlab 实例 第 1,2 章 离散时间信号与系统 例 1-1 用 MATLAB 计算序列{-2 0...
《数字信号处理》 MATLAB 实例_图文.pdf
《数字信号处理》 MATLAB 实例_信息与通信_工程科技_专业资料。 ...数字信号处理Matlab_实现... 20页 1下载券 数字信号处理各章节重点... ...
数字信号处理第7章 数字信号处理MATLAB实现及综合应用_....ppt
日益显著,数字信号处理已成为电子信息学科中的工程技术人 员必不可少的知识...处理的基 本概念和基本理论,本章首先在7.1节给出前 面各章的MATLAB典型例题...
数字信号处理matlab要点_图文.ppt
数字信号处理matlab要点 - MATLAB进行DSP分析入门 ? MATLAB的主要功能 1.数值计算和符号计算功能 MATLAB以矩阵作为数据操作的基本单位, 还提供了十分丰富的数值计...
数字信号处理指导书matlab版(2014新编).pdf
数字信号处理指导书matlab版(2014新编)_信息与通信_...并参考 噪音信号频率利用采样定理等知识选取合理的...下面用例子说明如何使用这个函数。 例 1 冲激响应...
《数字信号处理教程MATLAB释义与实现》第一章.ppt
数字信号处理教程MATLAB释义与实现陈怀琛编著 1 第一章 信号和信号处理 1.1 1.2 1.3 1.4 信号分类 信号处理 信号采样和复原的一个实例 本书概貌的说明 ...
数字信号处理Matlab实现实例(推荐给学生).doc
数字信号处理 Matlab 实现实例第1章 离散时间信号与系统 例 1-1 用 MATLAB 计算序列{-2 0 1 1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB 程序如...
基于MATLAB的数字信号处理实例分析.doc
基于MATLAB的数字信号处理实例分析 - 湖北文理学院理工学院 学生结业论文 课程名称:MATLAB 教程 结业论文名称:基于 MATLAB数字信号处理 实例分析 专业名称:通...
2012数字信号处理matlab实例.doc
2012数字信号处理matlab实例 - 数字信号处理课程设计第一次上机 实验目
数字信号处理MATLAB实例.doc
数字信号处理MATLAB实例 - 数字信号处理 MATLAB 实例 第1章 第2
数字信号处理习题答案及matlab实验详解_图文.pdf
数字信号处理习题答案及matlab实验详解_理学_高等教育_教育专区。第一章 参考答案...数字信号处理实验-matla... 65页 免费 数字信号处理MATLAB实例 25页 1下载券...
数字信号处理Matlab_实现实例(有用).doc
数字信号处理Matlab_实现实例(有用) - 数字信号处理 Matlab 实现实例 第1章 离散时间信号与系统 例 1-1 用 MATLAB 计算序列{-2 0 1 1 3}和序列{1 2....
数字信号处理Matlab_实现实例.doc
数字信号处理Matlab_实现实例 - 数字信号处理 Matlab 实现实例 第1章 离散时间信号与系统 例 1-1 用 MATLAB 计算序列{-2 0 1 1 3}和序列{1 2 0 -...
数字信号处理 吴镇扬 matlab实例.doc
数字信号处理 吴镇扬 matlab实例 - 第1章 离散时间信号与系统 0 1
数字信号处理Matlab 实现实例.doc
数字信号处理 Matlab 实现实例第1章 离散时间信号与系统 例 1-1 用 MATLAB 计算序列{-2 0 1 1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB 程序如...
第5章-MATLAB数字信号处理_图文.ppt
数字信号处理基本内容 及相应的MATLAB工具数字信号处理的基本内容通常分为两部分:...频率响应的实例 ? 例:先构成一个截止频率为400Hz的9阶巴特沃思 (Butterworth)...
数字信号处理matlab仿真.doc
数字信号处理matlab仿真 - 数字信号处理作业设计报告 一、 目的 1.增进对 Matlab 的认识,加深对数字信号处理理论方面的理解。 2.掌握数字信号处理中 IIR 和 FIR ...
数字信号处理MATLAB实验报告 4.pdf
数字信号处理MATLAB实验报告 4 - 实验报告 课程名称: 专业班级: 姓名: 学号: 数字信号处理实验 实验名称 实验地点 实验成绩 实验目的及任务 理解信号变换的基本概...
数字信号处理 吴镇扬 matlab实例.txt
数字信号处理 吴镇扬 matlab实例 - ?===第1页===...
matlab在数字信号处理中的应用(第2版)课件第十章.ppt
matlab数字信号处理中的应用(第2版)课件第十章_理学_高等教育_教育专区。matlab...通过选择FVTool工具窗口的 “Analysis”参数的不同内容项,可以查看 该实例滤波器...
更多相关标签: