数字信号处理实验教案

更新时间:2024-01-22 14:55:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理实验教案

信息工程学院-通信工程教研室

数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼同学们的独立解决问题的能力。本讲义在第三版的基础上编写了五个实验,前2个实验属基础性的验证性实验,第3、4、5个实验属基本应用综合性实验。

实验一 离散时间信号的MATLAB实现 实验二 线性卷积与循环卷积的原理及应用

实验三 频率采样定理

实验四 离散系统的因果性和稳定性及频率响应特性

实验五 基于MATLAB的快速傅里叶变换

根据教学进度,理论课结束后进行相关实验。

实验一 时域离散信号的产生

一 实验目的

(1)了解常用的时域离散信号及其特点。

(2)掌握MATLAB产生常用时域离散信号的方法。 二 实验内容

(1) 编写程序,产生下列离散序列:

A.f(n)=δ(n) (-3

B.f(n)=e(0.1+j1.6π)n (0

(2) 一个连续的周期性三角波信号频率为50Hz,信号幅度在0~+2V之间,在窗口上显示2个周期信号波形,对信号的一个周期进行16点采样来获取离散信号。试显示原连续信号和采样获得的离散信号波形。

(3)一个连续的周期性方波信号频率为200Hz,信号幅度在-1~+1V之间,在窗口上显示2个周期信号波形,用Fs=4kHz的频率对连续信号进行采样,试显示原连续信号和采样获得的离散信号波形。 三 实验步骤

(1) 在matlab命令窗口中逐行输入下列语句

>> n1=-3;n2=4;n0=0; %在起点n1、终点n2的范围内,于n0处产生冲激 >> n=n1:n2; %生成离散信号的时间序列 >> x=[n==n0]; %生成离散信号x(n) >> stem(n,x,'filled'); %绘制杆状图,且圆心处用实心圆表示 >> title('单位脉冲序列');

>> xlabel('时间(n)');ylabel('幅度x(n)');

在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了 f(n)=δ(n),(-3

>> n1=16;a=0.1;w=1.6*pi; >> n=0:n1;

>> x=exp((a+j*w)*n);

>>subplot(2,1,1),stem(n,real(x)); %在指定位置描绘图像 >> title('复指数序列的实部'); >> subplot(2,1,2),stem(n,imag(x)); >> title('复指数序列的虚部');

在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了f(n)=e(0.1+j1.6π)n,(0

>> f=50;Um=1;nt=2; %输入信号频率、振幅、显示周期 >> N=16;T=1/f; %N为信号一个采样周期的采样点数,T为信号周期 >> dt=T/N; %采样时间间隔 >> n=0:nt*N-1; %建立离散时间的时间序列 >> tn=n*dt; %确定时间序列样点在时间轴上的位置 >> f=Um*sawtooth(2*f*pi*tn)+1;

>> subplot(2,1,1),stem(tn,f); %显示经采样的信号 >> title('离散信号');

>> subplot(2,1,2),plot(tn,f); %显示原连续信号 >> title('连续信号');

在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,显示了原连续信号和采样获得的离散信号波形 (4) 在matlab命令窗口中逐行输入下列语句

>> f=200;Um=1;nt=2; %输入信号频率、振幅、显示周期 >> Fs=4000;N=Fs/f;T=1/f; %输入采样频率、求采样点数N、T为信号周期 >> dt=T/N; %采样时间间隔 >> n=0:nt*N-1; %建立离散时间的时间序列 >> tn=n*dt; %确定时间序列样点在时间轴上的位置 >> f=Um*sin(2*f*pi*tn); >> subplot(2,1,2),plot(tn,f); %显示原连续信号 >> title('连续信号');

>> subplot(2,1,1),stem(tn,f); %显示经采样的信号 >> title('离散信号');

在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,显示了原连续信号和采样获得的离散信号波形 四 思考题

(1) 如何在matlab下生产f(n)=3sin(nπ/4)(0

(2)改变实验步骤中最后两个实验的频率参数,分别重新生成相关的信号?

实验二 线性卷积与循环卷积的原理及应用

一 、实验目的

(1)掌握两种卷积的原理和两者的异同。

(2)掌握MATLAB实现两种卷积的计算和比较。 二、实验内容

(1)用MATLAB设计线性卷积; (2)调试写出线性卷积和源代码; (3)用MATLAB设计循环卷积; 三 实验步骤 1 线性卷积定理

1)线性卷积的引入

在实际应用中,为了分析时域离散线性非移变系统或者对序列进行滤波处理等,需要计算两个序列的线性卷积。线性卷积既可以在时域中直接计算,也可以通过变换在频域中计算得到。

2)线性卷积的时域计算方法

计算卷积的基本运算是翻转、移位、相乘和相加,这类卷积称为序列的线性卷积。如果两个序列的长度为N和M,那么卷积结果的长度为N+M-1。线性卷积有四步运算:①卷积运算时,y(n)要先反折得到y(-n);②m>0表示y(-n)序列右移,m<0表示左移,不同的m表示不同的值。

假设h(n)和x(n)都是有限长序列,长度分别为N和M,它们的线性卷积可以表示如下:

y2 循环卷积定理

l?h(n)?x(n)?m?0?h(m)x(n?m)N?1

MATLAB信号处理工具箱提供了conv函数,该函数用于计算两个有限序列的卷积。

1)循环卷积的引入

为了提高线性卷积的速度,希望用DFT(FFT)计算线性卷积。从而引入循环卷积来

运用DFT快速计算线性卷积。循环卷积运用到离散傅立叶变换的循环移位性质,即时域循环移位定理。

2)循环卷积的时域计算方法

假设h(n)和x(n)都是有限长序列,长度分别为N和M,它们的L点循环卷积可以表

示如下:

[M, ] L?maxNL称为循环卷积区间长度。n和m的变化区间均是[0,L-1],直接计算该式比较麻烦。计

cm?0LLy?h(n)?x(n)??h(m)L?1x((n?m))R(n)算机中采用矩阵相乘或快速傅里叶变换(FFT)的方法计算循环卷积。用矩阵相乘的方法计算两个序列的循环卷积,这里关键是先形成循环卷积矩阵。如果h(n)的长度N

3)线性卷积与循环卷积的关系

y上式说明,

cc(n)?q????y(n?qL)Rl?L(n)

ly(n)等于y(n)以L为周期的周期延拓序列的主值序列。y(n)的长度

l为N?M?1,因此只有当循环卷积长度L?N?M?1时,

cly(n)以L为周期进行周期延

l(n)y(n)y拓才无混叠现象。因此取其主值序列就满足=。即满足条件L?N?M?1。

四 思考题

(1)比较线性卷积和循环卷积在序列长度不同时两者的联系? (2)试着写出循环卷积的源代码?

实验三 时域采样理论与频域采样定理验证

一、实验目的

1时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。 二、实验原理及方法 时域采样定理的要点是: (a)对模拟信号

?(j?)xa(t)以间隔T进行时域等间隔理想采样,形成的采样信号的频谱X是

原模拟信号频谱为:

Xa(j?)以采样角频率?s(?s?2?/T)为周期进行周期延拓。公式

1???Xa(j??jn?s) ??X(j?)?FT[xa(t)]Tn??? a

(b)采样频率

?s必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的

频谱不产生频谱混叠。

利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。 理想采样信号

?a(t)xx(t)之间的关系为:

和模拟信号a?

?a(t)?xa(t)??(t?nT)xn???

对上式进行傅立叶变换,得到:

??Xa(j?)??[xa(t)??(t?nT)]e?j?tdt??n????

=??n???????xa(t)?(t?nT)e?j?tdt

在上式的积分号内只有当t?nT时,才有非零值,因此:

?(j?)?Xa 上式中,在数值上

n????x?a(nT)e?j?nT

xa(nT)=x(n),再将???T代入,得到:

?(j?)?Xa

n????x(n)e??j?n

j?X(e),即 上式的右边就是序列的傅立叶变换

?(j?)?X(ej?)Xa???T

上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量ω用?T代替即可。

频域采样定理的要点是:

a) 对信号x(n)的频谱函数X(ejω)在[0,2π]上等间隔采样N点,得到

XN(k)?X(ej?)

则N点IDFT[列,公式为:

??2?kN , k?0,1,2,?,N?1

XN(k)]得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值区序

?

xN(n)?IDFT[XN(k)]N?[?x(n?iN)]RN(n)i???

(b)由上式可知,频域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则N点IDFT[果N>M,

XN(k)]得到的序列xN(n)就是原序列x(n),即xN(n)=x(n)。如

xN(n)比原序列尾部多N-M个零点;如果N

xN(n)的长度N也比x(n)的长度M短,因此。xN(n)与x(n)不相同。

了时域混叠失真,而且

在数字信号处理的应用中,只要涉及时域或者频域采样,都必须服从这两个采样理论的要点。

对比上面叙述的时域采样原理和频域采样原理,得到一个有用的结论,这两个采样理论具有对偶性:“时域采样频谱周期延拓,频域采样时域信号周期延拓”。因此放在一起进行实验。

三 实验步骤

(1)时域采样理论的验证。

??tx(t)?Aesin(?0t)u(t) a给定模拟信号,

?式中A=444.128,?=502π,0=502πrad/s,它的幅频特性曲线如图10.2.1

图10.2.1

xa(t)的幅频特性曲线

现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。 安照

xa(t)的幅频特性曲线,选取三种采样频率,即Fs=1kHz,300Hz,200Hz。观测

时间选

Tp?50ms。为使用DFT,首先用下面公式产生时域离散信号,对三种采样频

率,采样序列按顺序用x1(n),x2(n),x3(n)表示。

??nTx(n)?x(nT)?Aesin(?0nT)u(nT) a

因为采样频率不同,得到的x1(n),x2(n),公式

x3(n)的长度不同, 长度(点数)用

N?Tp?Fs计算。选FFT的变换点数为M=64,序列长度不够64的尾部加零。

X(k)=FFT[x(n)] , k=0,1,2,3,-----,M-1 式中k代表的频率为

?k?2?kM。

要求: 编写实验程序,计算x1(n)、x2(n)和析频谱混叠失真。

(2)频域采样理论的验证 给定信号如下:

x3(n)的幅度特性,并绘图显示。观察分

?n?10?n?13?x(n)??27?n14?n?26?0其它?

j?X(e)?FT[x(n)]在区间[0,2?]上等间隔采样32 编写程序分别对频谱函数

和16点,得到

X32(k)和X16(k):

X32(k)?X(ej?)

??2?k32 , k?0,1,2,?31

X16(k)?X(ej?)

再分别对

???216k , k?0,1,2,?15

X32(k)和X16(k)进行32点和16点IFFT,得到x32(n)和x16(n):

x32(n)?IFFTX[32k(3)2] ?n , ?0, 1,2,x16(n)?IFFTX[16k(1)6] ?n , ?0, 1,2,,31,15j?X(e)、X32(k)和X16(k)的幅度谱,并绘图显示x(n)、x32(n)和x16(n)的波形,分别画出

进行对比和分析,验证总结频域采样理论。

提示:频域采样用以下方法容易变程序实现。

j?X(k)?FFT[x(n)]X(e)在[0,2?]的3232① 直接调用MATLAB函数fft计算就得到

32点频率域采样

② 抽取

X32(k)的偶数点即可得到X(ej?)在[0,2?]的16点频率域采样X16(k),即

X16(k)?X32(2k) , k?0,1,2,?,15。

○3 当然也可以按照频域采样理论,先将信号x(n)以16为周期进行周期延拓,取其主值区(16

j?X(e)在[0,2?]的16点频率域采样X16(k)。点),再对其进行16点DFT(FFT),得到的就是

四 思考题

如果序列x(n)的长度为M,希望得到其频谱()jXeω在]2,0[π上的N点等间隔采样,当N

实验四 离散系统的零极点分析

一、实验目的

1. 熟悉MATLAB的仿真及应用环境

2. 在MATLAB的环境下研究控制系统稳定性 二、实验内容和要求

1.了解离散系统的零极点与系统因果性和稳定性的关系。 2.观察离散系统零极点对系统冲激响应的影响。

3.熟悉MATLAB中进行离散系统零极点分析的常用子函数。 三 实验步骤

一)MATLAB子函数 1.zplane

功能:显示离散系统的零极点分布图。 调用格式:

zplane(z,p);绘制由列向量z确定的零点、列向量p确定的极点构成的零极点分布图。

zplane(b,a);绘制由行向量b和a构成的系统函数确定的零极点分布图。

[hz,hp,ht]=zplane(z,p);执行后可得到3个句柄向量:hz为零点线句柄,hp为极点线句柄,ht为坐标轴、单位圆及文本对象的句柄。

2.roots

功能:求多项式的根。 调用格式:

r=roots(a);由多项式的分子或分母系数向量求根向量。其中,多项式的分子或分母系数按降幂排列,得到的根向量为列向量。

二)实验原理

1.离散系统的因果性和稳定性 1)因果系统

由理论分析可知,一个离散系统的因果性在时域中必须满足的充分必要条件是: h(n)=0 n<0

即系统的冲激响应必须是右序列。

在变换域,极点只能在z平面上一个有界的以原点为中心的圆内。如果系统函数是一个多项式,则分母上z的最高次数应大于分子上z的最高次数。

2)稳定系统

在时域中,离散系统稳定的充分必要条件是:它的冲激响应绝对可加,即

?

h(n)??

n?0

在变换域,则要求所有极点必须在z平面上以原点为中心的单位圆内。

3)因果稳定系统

综合系统的因果性和稳定性两方面的要求可知,一个因果稳定系统的充分必要条件是:系统函数的全部极点必须在z平面上以原点为中心的单位圆内。

2.系统极点的位置对系统响应的影响

系统极点的位置对系统响应有着非常明显的影响。下面举例说明系统的极点分别是实数

?和复数时的情况,使用MATLAB提供的zplane子函数制作零极点分布图进行分析。

3.系统的因果稳定性实例分析

在MATLAB中提供了roots子函数,用于求多项式的根。配合使用zplane子函数制作零极点分布图,可以帮助我们进行系统因果稳定性的分析。

4.实验任务 (z?0.3)H3(z)?

(z?1?j)(z?1?j) 4?1.6z?1?1.6z?2?4z?3H2(z)?

1?0.4z?1?0.35z?2?0.4z?3

求该系统的零极点及零极点分布图,并判断系统的因果稳定性。

四 思考题

1结合本次实验与书本上相关原理,对书本后面的习题进行相关的matlab软件仿真?

2因果稳定的离散系统必须满足的充分必要条件是什么?MATLAB提供了哪些进行零极点求解的子函数?如何使用?

实验五 基于MATLAB的快速傅里叶变换

一 实验目的

学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的误差及其原因,以便正确应用FFT。 二 实验原理

用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是N/2π,因此要求DN≤/2π。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。 周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。 对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。 三 实验步骤及内容

(1)对以下序列进行谱分析。

x1(n)?R4(4)

n+1 0≤n≤3 x2(n)={ 8-n 4≤n≤7 0 其它n 4-n 0≤n≤3

X3(n)={ n-3 4≤n≤7 0 其它n

选择FFT的变换区间N为8和16 两种情况进行频谱分析。分别打印其幅频特性曲线。 并进行对比、分析和讨论。

(2)对以下周期序列进行谱分析。

x3(n)?cos?n4

选择FFT的变换区间N为8和16 两种情况分别对以上序列进行频谱分析。分别打印其幅频特性曲线。并进行对比、分析和讨论。

(3)对模拟周期信号进行谱分析

x4(n)?cos8?t?cos16?t?cos20?t

选择 采样频率HzFs64=,变换区间N=16,32,64 三种情况进行谱分析。分别打印其幅频特性,并进行分析和讨论。

四 思考题

(1)对于周期序列,如果周期不知道,如何用FFT进行谱分析? (2)如何选择FFT的变换区间?(包括非周期信号和周期信号)

本文来源:https://www.bwwdw.com/article/rmgo.html

Top