数字信号处理 离散傅里叶变换的性质及应用

  • 格式:docx
  • 大小:132.47 KB
  • 文档页数:9

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字信号处理实验

题目:离散傅里叶变换的性质及应用

学院:

专业:

学生姓名:班级/学号

指导老师:

一、实验目的

1.了解DFT的性质及其应用

2.熟悉MATLAB编程特点

二、实验仪器及材料

计算机,MATLAB软件

三、实验内容及要求

1.用三种不同的DFT 程序计算8()()x n R n =的256点离散傅里叶变换()X k ,并比较三种程序计算机运行时间。

(1)编制用for loop 语句的M 函数文件dft1.m ,用循环变量逐点计算()X k ; (2)编写用MATLAB 矩阵运算的M 函数文件dft2.m ,完成下列矩阵运算:

000

0121

012(1)

(1)(1) (0)(0) (1)(1)

(1)(1) N N

N N

N N N N

N

N N N N N N

N N X x W W W W X x W W W W x N X N W W W W -----⎡⎤⎡⎤⎡⎤

⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥

--⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦

(3)调用fft 库函数,直接计算()X k ;

(4)分别调用上述三种不同方式编写的DFT 程序计算序列()x n 的离散傅里叶变换

()X k ,并画出相应的幅频和相频特性,再比较各个程序的计算机运行时

间。

M 函数文件如下: dft1.m:

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 dft2.m:

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);

dft3.m:

function[Am,pha]=dft3(x)

Xk=fft(x);

Am=abs(Xk);

pha=angle(Xk);

源程序、运行结果及结论

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

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);

end

<3> function[Am,pha] = dft3(x)

Xk = fft(x);

Am = abs(Xk); pha = angle(Xk);

end

<4> clear all;

clc;

x = [ones(1,8),zeros(1,256-8)];

t = cputime;

[Am1,pha1] = dft1(x);

t1 = cputime-t;

t = cputime;

[Am2,pha2] = dft2(x);

t2 = cputime-t;

t = cputime;

[Am3,pha3] = dft3(x);

t3 = cputime-t;

subplot(6,1,1);stem(Am1);title('幅频特性1'); subplot(6,1,2);stem(pha1);title('相频特性1'); subplot(6,1,3);stem(Am2);title('幅频特性2'); subplot(6,1,4);stem(pha2);title('相频特性2'); subplot(6,1,5);stem(Am3);title('幅频特性3'); subplot(6,1,6);stem(pha3);title('相频特性3');

2、运行结果

3、 结论

从以上运行结果可以看出,调用FFT 库函数直接计算X(k)速度最快,所

用时间趋于0,矩阵运算次之,用循环变量逐点计算运行速度最慢。因此FF T 算法大大提高了DFT 的实用性。

2.利用DFT 实现两序列的卷积运算,并研究DFT 点数与混叠的关系。

(1)已知两序列: ⎩⎨⎧>≤≤=3;0

3

0;)5/3()(n n n h n ,用MATLAB 生成随机输入

信号x(n),n 的取值为0~2;

(2)用直接法(即用线性卷积的定义计算,见下式)计算线性卷积y(n)=x(n)*h(n)的结果,并以图形方式表示结果;

20),()()(1

-+≤≤-⨯=

∑-=M N n m n h m x n y N m

其中:序列)1N n 0(),n (x -≤≤和序列)1M n 0(),n (h -≤≤

(3)用MATLAB 编制利用DFT 计算线性卷积y(n)=x(n)*h(n)的程序;分别令圆周卷积的点数为L=5,6,8,10,以图形方式表示结果。 (4)对比直接法和圆周卷积法所得的结果。 源程序如下:

用直接法和MATLAB 编制利用DFT 分别计算线性卷积y(n)=x(n)*h(n)的程序: N=0:3; M=3;

x=rand(1,M); h=(3/5).^N; y1=conv(h,x);

Xk2=fft(x,10); %做10点fft Hk2=fft(h,10); Yk2=Xk2.*Hk2; y2=ifft(Yk2);

Xk3=fft(x,8); %做点8点fft Hk3=fft(h,8);