实验报告
课程名称:数字信号处理指导老师:刘英成绩:__________________ 实验名称:DFT/FFT的应用之一——确定性信号谱分析 一、实验目的和要求
谱分析即求信号的频谱。本实验采用DFT/FFT技术对周期性信号进行谱分析。通过实验,了解用X(k)近似地表示频谱X(ej?)带来的栅栏效应、混叠现象和频谱泄漏,了解如何正确地选择参数(抽样间隔T、抽样点数N)。 二、实验内容和步骤
2-1 考虑下列序列x(n)=cos(0.48pn)+cos(0.52pn) 求出它基于有限个样本的频谱。
a)当0≤n≤10 时,分别确定并画出x(n)的基于N=10点DFT和N=100点的DFT b)当0≤n≤100 时,确定并画出x(n) 的基于N=100点的DFT
比较(a)、(b)基于N=100的DFT的异同,说明补零(高密度频谱)和采集更多数据(高分辨率频谱)之间的区别。
2-2谱分析参数可以从下表中任选一组(也可自定)。对各组参数时的序列,计算:一个正弦周期是否对应整数个抽样间隔?观察区间是否对应整数个正弦周期?
抽样间隔T 信号频率f(赫兹) 50 50 50 50 谱分析参数 (秒) 第一组参数 第二组参数 第三组参数 第四组参数 0.000625 0.005 0.0046875 0.004 (抽样个数) 32 32 32 32 16 截断长度N 50 第五组参数 0.0025 2-3 对以上几个正弦序列,依次进行以下过程。 2-3-1观察并记录一个正弦序列的图形(时域)、频谱(幅度谱、频谱实部、频谱虚部)形状、幅度谱的第一个峰的坐标(U,V)。
1
2-3-2分析抽样间隔T、截断长度N(抽样个数)对谱分析结果的影响; 2-3-3思考X(k)与X(ej?)的关系;
2-3-4讨论用X(k)近似表示X(ej?)时的栅栏效应、混叠现象、频谱泄漏。 三、主要仪器设备
MATLAB编程。 四、操作方法和实验步骤
(参见“二、实验内容和步骤”) 五、实验数据记录和处理 2-1
%0<=n<=9,N=10 n=0:1:9;
x=cos(0.48*pi*n)+cos(0.52*pi*n); X=fft(x,10); figure(1);
subplot(2,1,1);stem(n,x);
xlabel('n');ylabel('x');title('signal x(n),0<=n<=9'); axis([0 10 -2.5 2.5]);
subplot(2,1,2);stem(n/5,abs(X));axis([0 1 0 10]); xlabel('n');ylabel('|X|');title('Magnitude of X');
%0<=n<=9,N=100,21á? n=0:1:9;
x=cos(0.48*pi*n)+cos(0.52*pi*n); x=[x,zeros(1,90)]; X=fft(x,100); N=0:1:99; figure(2);
subplot(2,1,1);stem(N,x);
xlabel('n');ylabel('x');title('signal x(n),0<=n<=9'); axis([0 100 -2.5 2.5]);
subplot(2,1,2);stem(N/50,abs(X));axis([0 1 0 10]); xlabel('n');ylabel('|X|');title('Magnitude of X');
%0<=n<=99,N=100 n=0:1:99;
x=cos(0.48*pi*n)+cos(0.52*pi*n); X=fft(x,100); figure(3);
subplot(2,1,1);stem(N,x);
xlabel('n');ylabel('x');title('signal x(n),0<=n<=9');
2
axis([0 100 -2.5 2.5]);
subplot(2,1,2);stem(N/50,abs(X));axis([0 1 0 60]); xlabel('n');ylabel('|X|');title('Magnitude of X');
2-2
%program 2-2-1 clear;clf;clc;%清除缓存 length=32; T=0.000625;
t=0:0.001:31;%设置区间以及步长 n=0:length-1; xt=sin(2*pi*50*t); xn=sin(2*pi*50*T*n); figure(1);
subplot(2,1,1);plot(t,xt); xlabel('t');ylabel('x(t)'); axis([0 0.1 -1 1]);title('原序列'); subplot(2,1,2);
stem(n,xn);xlabel('n');ylabel('xn)'); title('抽样后序列');axis([0 length -1 1]); figure(2); %画出序列的实部、虚部、模、相角 subplot(2,2,1);stem(n,real(xn));
xlabel('n');ylabel('real(xn)');title('序列的实部'); axis([0 length -1 1]);
subplot(2,2,2);stem(n,imag(xn));
xlabel('n');ylabel('imag(xn)');title('序列的虚部'); axis([0 length -1 1]);
subplot(2,2,3);stem(n,abs(xn));
xlabel('n');ylabel('abs(xn)');title('序列的模'); axis([0 length -1 1]);
subplot(2,2,4);stem(n,angle(xn));
xlabel('n');ylabel('angle(xn)');title('序列的相角'); axis([0 length -1 pi]); F=fft(xn,length); %计算DFT
figure(3); %画出DFT的幅度,实部和虚部 subplot(3,1,1);stem(n,abs(F));
xlabel('k');ylabel('abs(F)');title('DFT幅度谱'); axis([0 length 0 20]);
subplot(3,1,2);stem(n,real(F));
xlabel('k');ylabel('real(F)');title('DFT实部'); axis([0 length -2*10^-15 2*10^-15]); subplot(3,1,3);stem(n,imag(F));
xlabel('k');ylabel('imag(F)');title('DFT虚部'); axis([0 length -20 20]);
3
六、实验结果与分析 2-1
4
为了得到一个较密的频谱,显然,我们的采样频率应更小一些,也就是说,应增加N的长度。有两种方法,一种是取样时就采集更多的样本;另一种是在序列后面添加一定长度的零,叫做填零运算填零是给原始序列填零的运算。这导致较长的DFT,它会给原始序列的离散时间傅氏变换提供间隔更密的样本。填零运算提供了一个较密的频谱和较好的图示形式,但因为在信号中只是附加了零,而没有增加任何新的信息,还是原始连续谱的N点取样,只是补零观察到了更多的频点,但这并不意味着补零能够提高真正的频谱分辨率。采集更多的数据,可以获得更多的信息,可以真正提高频谱分辨率。 2-2
抽样间隔T 频率f(Hz) 50 50 50 50 50 第一组参数 谱分析参数 (秒) 第一组参数 第二组参数 第三组参数 第四组参数 第五组参数 0.000625 0.005 0.0046875 0.004 0.0025 (抽样个数) 32 32 32 32 16 0.02s 0.16s 0.15s 0.128s 0.04s 截断长度N 抽样时间 5