离散傅立叶变换的性质及应用实验报告
学院:电子信息学院 专业: 班级: 姓名 实验时 间 实验项离散傅立叶变换的性质及应用 目名称 实验1、了解DFT 的性质及其应用。 目2、熟悉MATLAB 编程特点。 的 指导教师 成绩 学号 实验组 实验原2、序列卷积 理 设序列 的长度为 N,序列 的长度为 M。则分别对两个序列作点的 DFT得到 和 ,则两序列的线性卷积等于 。即 时域卷积频域为相乘关系。 ) ( 1 n x ) ( 2 n x 1 M N L ) ( 1 k X ) ( 2 k X )(ny)) ( ) ( ( 2 1 k X k X IDFT 实验仪器 实验1、用三种不同的 DFT程序计算 的傅立叶变换X(k),并比较三种程序计算机的运行时间。 步(1)编制用for循环语句的 M函数文件 dft1.m,用循环变量逐点计算X(k); 骤 (2)编写用MATLAB 矩阵运算的M 函数文件dft2.m,完成下列矩阵运算: 计算机一台; Matlab 软件 (3)调用 FFT库函数,直接计算X(k) ; (4)分别利用上述三种不同方式编写的 DFT 程序计算序列x(n)的傅立叶变换X(k),并画 出相应的幅频和相频特性,再比较各个程序的计算机运行时间。 2、利用DFT 实现两序列的卷积运算,并研究DFT 点数与混叠的关系。 给定,利用圆周卷积计算线性卷积(快速卷积,频域); 计算不同DFT 点数下的圆周卷积输出;并用函数stem(n,y)画出相应图形。选择不同的DFT 点数进行对比,观察其混叠效应。 3、研究高密度频谱与高分辨率频谱 设有连续信号 以采样频率 32 对该信号采样,分析下列三种情况的幅频特性。 (1)采集数据长度点,做点的 DFT,并画出幅频特性。 (2)采集数据长度点,补零到 256点的DFT,并画出幅频特性。 (3)采集数据长度 256点,做 256点的 DFT,并画出幅频特性。 观察三幅不同频率特性图,分析和比较它们的特点以及形成的原因。 4、实现序列的内插和抽取所对应的傅立叶变换。 对应的傅立叶变换(128 点)。比较这三个计算结果得到的幅频特性图,分析其差别产生的原因。选择不同的插值倍数和抽样倍数对比其幅频的变化。 实1、用三种不同的DFT 程序实现一维数字信号的傅立叶变换。 验2、利用DFT 实现两序列的卷积运算,并研究DFT 点数与混叠的关系。 内3、研究高密度频谱与高分辨率频谱。 4、序列的内插和抽取时所对应的傅立叶变换。 容 实验数据 第1题(1)、 代码如下:
function [am,pha]=dft1(x) N=length(x);
w=exp(-j*2*pi/N); for k=1:N sum=0; for n=1:N
sum=sum+x(n)*w^((k-1)*(n-1)); end
am(k)=abs(sum); pha(k)=angle(sum); End (2)
function [am,pha]=dft2(x) N=length(x); n=[0:N-1]; k=[0:N-1];
w=exp(-j*2*pi/N); nk=n; *k;
wnk=w.^(nk); Xk=x*wnk; am= abs(Xk); pha=angle(Xk); 第3题、
① 信号一: t1=15/32000; N=16; n=[0:N-1];
t=(0:1/32000:t1);
xt=cos(2*pi*6.5*1000*t)+cos(2*pi*7*1000*t)+cos(2*pi*9*1000*t); y=fft(xt,N) stem(n,y,'.')
②信号二: N=256;
t=(0:1/32000:t1); n=[0:N-1];
xt=cos(2*pi*6.5*1000*t)+cos(2*pi*7*1000*t)+cos(2*pi*9*1000*t); y=fft(xt,N) stem(n,y,'.')
③信号三: t1=255/32000; N=256; n=[0:N-1];
t=(0:1/32000:t1);
xt=cos(2*pi*6.5*1000*t)+cos(2*pi*7*1000*t)+cos(2*pi*9*1000*t); y=fft(xt,N) stem(n,y,'.') 4
x=[1 1 1 1 1 1 1 1]; k=0:7 X1=dft1(x) X2=dft2(x) X3=fft(x) subplot(2,2,1) plot(abs(X1)) title('1') subplot(2,2,2) plot(abs(X2)) title('2') subplot(2,2,3) plot(abs(X3)) title('3') figure subplot(2,2,1) a=atan(imag(X1)./real(X1)); plot(k,a,'r'); title('1') subplot(2,2,2) a=atan(imag(X2)./real(X2)); plot(k,a,'r'); title('2') subplot(2,2,3) a=atan(imag(X3)./real(X3)); plot(k,a,'r'); title('3') 运行结果如下 实1、通过此次实验中练习使用matlab语言进行快速傅里叶变换,更为熟悉的掌握了matlab验的功能,在实验过程中也遇到很多小问题,并通过仔细检查和查阅相关书籍解决此类问总题,让我深刻认识到,细节的重要性。 2、了解了DFT 的性质及其应用,熟悉MATLAB 编程的特点。 结 指导教师意见 签名: 年 月 日