数字信号处理实验报告1
- 格式:doc
- 大小:160.00 KB
- 文档页数:6
离散傅立叶变换的性质及应用实验报告
学院:电子信息学院 专业: 班级:
姓名 学号 实验组
实验时间 指导教师 成绩
实验项目名称 离散傅立叶变换的性质及应用
实验目的 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
实验仪器 计算机一台;
Matlab 软件
实验步骤 1、用三种不同的 DFT程序计算 的傅立叶变换X(k),并比较三种程序计算机的运行时间。
(1)编制用for循环语句的 M函数文件 dft1.m,用循环变量逐点计算X(k);
(2)编写用MATLAB 矩阵运算的M 函数文件dft2.m,完成下列矩阵运算:
(3)调用 FFT库函数,直接计算X(k) ;
(4)分别利用上述三种不同方式编写的 DFT 程序计算序列x(n)的傅立叶变换X(k),并画
出相应的幅频和相频特性,再比较各个程序的计算机运行时间。
2、利用DFT 实现两序列的卷积运算,并研究DFT 点数与混叠的关系。
给定,利用圆周卷积计算线性卷积(快速卷积,频域);
计算不同DFT 点数下的圆周卷积输出;并用函数stem(n,y)画出相应图形。选择不同的DFT
点数进行对比,观察其混叠效应。
3、研究高密度频谱与高分辨率频谱
设有连续信号
以采样频率 f kHz s 32 对该信号采样,分析下列三种情况的幅频特性。
(1)采集数据长度N 16点,做N 16点的 DFT,并画出幅频特性。
(2)采集数据长度N 16点,补零到 256点的DFT,并画出幅频特性。
(3)采集数据长度N 256点,做N 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 编程的特点。
指导教师意见
签名: 年 月 日