数字信号处理实验三

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

1. 学会filter函数和卷积函数的使用。

2. 学会求解离散时间傅立叶变换,并能对其性质进行初步的判断。

二、实验内容

1. 线性时不变离散系统的冲击响应计算。

2. 离散时间序列的卷积。

3. 离散时间傅里叶变换及其性质。

三、主要算法与程序

Q2.21 y1=filter(num,den,x);%利用filter计算冲激响应

Q2.22 num=[2.2403 2.4908 2.2403];den=[1 -0.4 0.75];y=filter(num,den,x);%利用filter计算冲激响应

Q3.3 plot(w/pi,unwrap(angle(h)));

四、实验结果与分析

Q2.21 利用filter命令编写一个MATLAB程序,生成式(2.17)给出的因果线性时不变系统的冲激响应,计算并画出前40个样本。把你的结果和习题Q2.20中得到的结果相比较

答:结果如图1:

图 1 filter和impz命令实现冲激响应

通过上图比较知道两程序所实现的功能完全一样。

Q2.22 编写一个MATLAB程序,生成并画出式(2.11)给出的因果线性时不变系统的阶跃响应。用该程序计算并画出式(2.15)给出的线性时不变系统的阶跃响应的前40个样本。

答:

样本值如下:

所得结果如图2:

图 2 阶跃响应

Q2.28 运行程序P2.7,对序列h[n]和x[n]求卷积,生成y[n],并用FIR滤波器h[n]对输入x[n]滤波,求得y1[n]。y[n]和y1[n]有差别吗?为什么要使用对x[n]补零后得到的x1[n]作为输入来产生y1[n]?

答:所得结果如图3:

图3

通过上图比较可以看出y[n]和y1[n]没有差别;

对[n]补零后得到的x1[n]作为输入来产生y1[n]是因为filter函数产生的输入和输出序列长度相同,而两信号卷积后所得的长度为这两个信号长度之和减1,因此要对[n]补零。

Q2.29 修改程序P2.7,计算长度为15的序列h[n]和长度为x[n]的卷积,重做问题Q2.28。h[n]和x[n]的样本值由你自己决定。

答:所得结果如图4:

图 4

Q3.1 在程序P3.1中,计算离散时间傅里叶变化的原始序列是什么?MATLAB 命令pause 的作用是什么?

答:原始序列为:y[n]-0.6y[n-1]=2x[n]+x[n-1];pause 的作用是使程序运行到这个语句后暂停,按任意键后继续执行下面语句。

Q3.2 运行程序P3.1,求离散时间傅里叶变换的实部、虚部以及幅度和相位谱。离散时间傅里叶变换是ω的周期函数吗?若是,周期是多少?描述是这四个图形表示的对称性。

答:结果见图5和图6;离散时间傅里叶变换是ω的周期函数,周期为2π。

图 5 图 5

Q3.3 修改程序P3.1,在范围0≤ω≥π内计算如下序列的离散时间傅里叶变换:

ωωωω

ωωω

32327.05.03.013.05.07.0)(j j j j j j j e e e e e e e U ------+-+++-= 并重做习题Q3.2。讨论你的结果。你能解释相位谱中的跳变吗?MATLAB 命令unwrap 可以消除跳变。试求跳变被移除后的相位谱。

答:结果见图7和图8;离散时间傅里叶变换是ω的周期函数,周期为2π。

图 7 图 8 因为离散时间傅里叶变换是ω的周期函数,周期为2π,当计算的相位在频率范围[-π, π]之外时,相位按取2π模计算,因此就会出现2π的不连续。

Q3.6 通过加入合适的注释语句和程序语句,修改程序P3.2,对程序生成的图形中的两个轴加标记。哪个参数控制时移量?

答:

修改程序为:xlabel('\omega /\pi');%将x 轴标记为ω/π

ylabel('振幅');%将y 轴标记为振幅;

xlabel('\omega /\pi');%将x 轴标记为ω/π

ylabel('以弧度为单位的相位');%将y 轴记为以弧度为单位的相位;

参数D 为控制时移量。

Q3.7 运行修改后的程序并讨论你的结果。

答:通过观察知道当D 增大时,序列的幅度谱不变;相位谱变密,周期缩短。

图9

Q3.8 选取不同的时移值重做习题Q3.7。

答:图10为D=5;图11为D=100

图10 图11

五、实验小结

1. 对于filter函数来说,filter函数产生的输入和输出序列长度相同,而两信号卷

积后所得的长度为这两个信号长度之和减1,因此要对[n]补零。

2. 对于每个实验结果都需要自己亲自去试,并通过改变其中的一些参数来观察

结果变化,从而弄懂每一个语句的意思。

3. 对于unwrap函数自己并不知道如何去使用,就利用help unwrap命令查阅,

深感matlab的强大。

相关文档
最新文档