数字信号处理实验报告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 编程的特点。

指导教师意见

签名: 年 月 日