信号与系统实验二实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 利用DFT 分析离散信号频谱
一、 实验目的
应用离散傅里叶变换(DFT),分析离散信号x [k ]。深刻理解利用DFT 分析离散信号频谱的原理,掌握改善分析过程中产生的误差的方法。
二、实验原理
根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)与四种确定信号傅里叶变换的之间的关系,实现由DFT 分析其频谱。
三、实验内容
1. 利用FFT 分析信号31,1,0 ),8
π3cos(][ ==k k k x 的频谱; (1) 确定DFT 计算的参数;
(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。 函数代码:N=32; k=0:N-1;
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)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');
xlabel('Frequency (rad)');
误差产生主要是k 值有限,通过增大k 值可以减小误差
2. 利用FFT 分析信号]
[)(][21k u k x k 的频谱; (1) 确定DFT 计算的参数;
(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。 函数代码为:k=0:30;
x=0.5.^k;
subplot(2,1,1);
stem(k,x); %画出序列的时域波形
subplot(2,1,2);
w=k-15;
plot(w, abs(fftshift(fft(x)))); %画出序列频谱的幅度谱
3. 有限长脉冲序列]5,4,3,2,1,0;5,0,1,3,3,2[][==k k x ,利用FFT 分析其频谱,并绘出其幅度谱与相位谱。
函数代码为:k=0:5;
x=[2,3,3,1,0,5];
X=fft(x);
subplot(2,1,1);
stem(k,abs(fftshift(X)));
ylabel('Magnitude');
xlabel('Frequency (rad)');
subplot(2,1,2);
stem(k,angle(fftshift(X)));
ylabel('Phase');
xlabel('Frequency (rad)');
4. 某周期序列由3个频率组成: )2
πcos()16π9cos()167πcos(][k k k k x ++=,
利用FFT 分析其频谱。如何选取FFT 的点数N ?此3个频率分别对应FFT 计算结果X [m ]中的哪些点?若选取的N 不合适,FFT 计算出的频谱X [m ]会出现什么情况?
N 取三个因子的最小公倍数为32
函数代码为:N=32; k=0:N-1;
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)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');
xlabel('Frequency (rad)');
5. 某离散序列由3个频率组成: 630),15
π3.2cos(75.0)152πcos(][≤≤+=k k k k x 利用FFT 分析其频谱。
(1) 对x [k ]做64点FFT ,绘出信号频谱,能分辨出其中的两个频率吗?
答:函数代码为N=64; k=0:N-1;
x=cos(2*pi/15.*k)+0.75*cos(2.3*pi/15.*k);
X=fft(x,N);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');
xlabel('Frequency (rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');
xlabel('Frequency (rad)');
(2)对x[k]补零到256点后计算FFT,能分辨出其中的两个频率吗?
答:函数代码为:N=256; k=0:N-1;
x=cos(2*pi/15.*k)+0.75*cos(2.3*pi/15.*k);
X=fft(x,N);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');
xlabel('Frequency (rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');
xlabel('Frequency (rad)');