数字信号处理实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的强大。