实验一利用DFT分析信号频谱

实验一利用DFT分析信号频谱
实验一利用DFT分析信号频谱

实验一利用DFT 分析信号频谱

一、 实验目的

1. 加深对DFT 原理的理解。

2. 应用DFT 分析信号的频谱。

3. 深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。 二、 实验设备与环境 计算机、MATLAB^件环境。 三、 实验基础理论 1. DFT 与DTFT 的关系

方法二:实际在MATLAB 十算中,上述插值运算不见得是最好的办法。 由于DFT 是DTFT 的取

样值,其相邻两个频率样本点的间距为 —,所以如果我们增加数据的长度

N,使得到的

N

DFT 谱线就更加精细,其包络就越接近 DTFT 的结果,这样就可以利用 DFT 计算DTFT 如果

没有更多的数据,可以通过补零来增加数据长度。

3、利用DFT 分析连续时间函数

利用DFT 分析连续时间函数是,主要有两个处理:①抽样,②截断 对连续时间信号x a (t) 一时间T 进行抽样,截取长度为

M 则

ML

X a (N)「-x a (t)e4dt 二「x a (nT)e jnT

n=0

再进行频域抽样可得

M 4

—j 竺 n

送,T' X a (nT)e N =TX M (k) NT n =0

因此,利用DFT 分析连续时间信号的步骤如下: (1 )、确定时间间隔,抽样得到离散时间序列 x(n).

(2)

、选择合适的窗函数和合适长度 M 得到M 点离散序列x M

DFT 实际上是 DTFT 在单位圆上以

的抽样,数学公式表示为:

N-1

_j 空 k

X(k) = X(z)| 耳八 x(n)e N

z”

N

n=0

(2 — 1)

2、利用 DFT 求DTFT 方法一:利用下列公式:

2rk

X(e j )二、X(k)(

)

k=0

N

k= 0,1,..N - 1

(2 — 2)

Sn(N ,/2) Nsin(,/2)

.N A

e 2为内插函数

(2— 3)

(2—4)

X a (r 1)|

(n) = x(n)w(n).

(3 )、确定频域采样点数N,要求NA M。

(4)、利用FFT计算N点DFT,得到X M (k)。

(5)、根据式(2 —4)计算X a(j0)的近似值。

利用上述方法分析连续连续时间时,应该注意以下问题:

(1 )、频谱泄露

(2 )、频谱混叠

(3)、栅栏效应和频谱分辨率

四、实验内容

1、已知x(n)={2,-1,1,1} ,完成如下要求:

(1)、计算他的DTFT并画出卜n , n ]区间的波形。

(2)、计算4点DFT并把结果显示在(1)所画的图形中。

(3)、对x(n)补零,计算64点DFT并显示结果。

(4)、根据实验结果,分析是否可以由DFT计算DTFT 如果可以,如何实现

(1)(2)实验代码如下:

x=[2 -1 1 1];

n=0:3;

w=0:0.01*pi:pi*2;

X1=x*exp(-j* n'*w);

X2=fft(x)

subplot(211);

plot(w,abs(X1));

hold on;

stem( n*pi/2,abs(X2),'filled');

axis tight;

subplot(212);

plot(w,a ngle(X1));

hold on;

stem( n*pi/2,a ngle(X2),'filled');

axis tight;

MATLAB图形如下:

(3 )实验代码如下:

N=0:63;

x=[-2 -1 1 1 zeros(1,60)]; Y=fft(x);

subplot(211);

stem(abs(Y),'filled'); subplot(212);

stem(a ngle(Y),'filled'); MATLA图像如下:

5

70

答:可以由DFT 计算DTFT 由实验结果波形看出,序列补零后,长度越长, DFT 点数越多, 其DFT 越逼近其DTFT 的连续波形。所以,令序列补零至无穷长时,可由其 2、考察序列

x(n)=cos(0.48 n n)+cos(0.52 n n)

(1)

0<=n<=10时,用DFT 估计x(n)的频谱;将x(n)补零加长到长度为 100点序列用DFT

估计x(n)的频谱,要求画出相应波形。

(2) 0<=n<=100时,用DFT 估计x(n)的频谱。并画出波形。 (3) 根据实验结果,分析怎样提高频谱分辨率 (1)实验程序代码如下:

DFT 当做其DTFT

4 3 2 i o

20

30

40

50

60

io

5

70 n=0:10;

k=0:10;

x=cos(0.48*pi* n)+cos(0.52*pi* n);

Y=fft(x);

subplot(211);

stem(k,abs(Y),'filled');

subplot(212);

stem(k,a ngle(Y),'filled');

MATLA波形如下:

将x(n)补零至100点再分析其频谱

程序代码:

n=[ n1 n2]

k=0:99

n1=0:10

x1=cos(0.48*pi* n1)+cos(0.52*pi* n1);

n2=11:99 x2=zeros(1,89);

x=[x1 x2];

Y=fft(x);

subplot(211); stem(k,abs(Y),'filled'); subplot(212);

stem(k,a ngle(Y),'filled');

MATLA图形如下:

(2)0 w n w 100时

程序代码如下:

n=0:100;

x=cos(0.48*pi* n)+cos(0.52*pi* n); y=fft(x);

subplot(211);

stem(0:100,abs(y),'filled'); subplot(212);

stem(0:100,a ngle(y)/pi,'filled'); MATLA图形如下:

相关主题
相关文档
最新文档