华工信号与系统实验二(信工7班)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 利用DFT 分析离散信号频谱
一、 实验目的
应用离散傅里叶变换(DFT),分析离散信号x [k ]。深刻理解利用DFT 分析离散信号频谱的原理,
掌握改善分析过程中产生的误差的方法。
二、实验原理
根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)
与四种确定信号傅里叶变换的之间的关系,实现由DFT 分析其频谱。
三、实验内容
1. 利用FFT 分析信号的频谱; (1) 确定DFT 计算的参数;
(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。 ①源代码 N=32;k=0:31; x=cos(3*pi/8*k); X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency(rad/s)'); title('频谱图'); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase');
xlabel('Frequency(rad/s)'); title('相位图'); ②运行结果
31,1,0 ),8
π
3cos(][ ==k k k
x
③结果分析
经计算可知:该信号的基波周期N=16,根据题意,为了显示k=0到31,所以取周期N ’=32,基波频率w 0=
2πN′
= π
8
。
对于计算值,由于在时间轴上的取值范围有限,计算时只取区间[-16,16]上的值,此时在频率轴上对应16,而理论值的区间为(-∞,+∞),经计算可知结果为一冲击信号,强度为π,二者显然不相同。 误差原因:计算响应时,所选取的区间不同。
改善方法:在条件允许范围内,应尽量多取点。
2. 利用FFT 分析信号的频谱;
(1) 确定DFT 计算的参数;
(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。 ①源代码 N=32;k=0:31; x=cos(3*pi/8*k); X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency(rad/s)'); title('频谱图'); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase');
xlabel('Frequency(rad/s)'); title('相位图'); ②运行结果
][)(][21k u k x k
③结果分析
信号无限长,因此需要对其进行截短。该序列单调衰减,当k>=30时,序列已几乎衰减为0,因此只取序列在区间[0,30]上的数值进行分析。
理论值为X (jw )=
1
1−0.5∗e −jw
, 当取
k 的值达到使x[k]衰减到0,理论值与真实值越接近。
误差原因:计算响应时,所选取的区间太短。
改善方法:在条件允许范围内,选取尽量大的取值区间。
3. 有限长脉冲序列,利用FFT 分析其频谱,并绘出其幅度谱与相
位谱。 ①源代码 N=6; k=0:5; x=[2 3 3 1 0 5]; X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency(rad/s)'); title('频谱图'); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase');
xlabel('Frequency(rad/s)'); title('相位图'); ②运行结果
4. 某周期序列由3个频率组成: ,
利用FFT 分析其频谱。如何选取FFT 的点数N ?此3个频率分别对应FFT 计算结果X [m ]中的哪些点?若选取的N 不合适,FFT 计算出的频谱X [m ]会出现什么情况?
]5,4,3,2,1,0;5,0,1,3,3,2[][==k k
x )2
π
cos()16π9cos()167πcos(
][k k k k x ++=
①源代码 N=32;k=0:31;
x=cos(7*pi/16*k)+cos(9*pi/16*k)+cos(pi/2*k); X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency(rad/s)'); title('频谱图'); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase');
xlabel('Frequency(rad/s)'); title('相位图'); ②运行结果
③结果分析
以上三个余弦函数的最小正周期分别为32,32,4.所以x[k]的基波周期为N=32。故取N 为32的整数倍,这里取N=32。
幅度谱在m =±9、±8、±7依次对应cos(9π16k)、cos(π2k) cos(7π
16
k)。 只要N 取基波周期的整数倍,就能得到正确的结果,但是会增加计算量,频率会发生混叠,不利于
观察。
5. 某离散序列由2个频率组成: 利用FFT 分析其频谱。
(1) 对x [k ]做64点FFT ,绘出信号频谱,能分辨出其中的两个频率吗? ①源代码
N=64;k=0:63;
630),15
π3.2cos(75.0)152πcos(][≤≤+=k k k k x