华工信号与系统实验二(信工7班)

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

相关文档
最新文档