利用DFT分析信号频谱_matlab..doc
文本预览下载声明
实验 2-1 利用 DFT分析信号频谱
实验目的
加深对 DFT 原理的理解。
应用 DFT 分析信号频谱。
深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法
实验内容
x(n)= {2 ,?1 ,1 ,1},完成如下要求:
计算其 DTFT,并画出 [?π ,π ]区间的波形
计算 4 点 DFT,并把结果显示在(1)所画的图形中
对 x (n)补零,计算 64 点 DFT,并显示结果
是否可以由 DFT 计算 DTFT,如果可以,请编程实现
程序代码
xn=[2,-1,1,1];
n=0:3;
w=-pi:0.01:pi;
X=xn*exp(-1i*n*w); %计算 DTFT
yy=abs(X);
subplot(211);
plot(w,yy); %绘出DTFT后的波形
Y=fft(xn); %利用FFT计算 4点DFT
yy=abs(Y);
hold on;
stem((0:3),yy); %绘出DFT后的波形,并同绘在一个图中
N=64;
m=6;
xn=[2,-1,1,1];
xn=[xn,zeros(1,60)]; %对 xn补零
y=fft(xn);
yy=abs(y);
f=0:N-1;
subplot(212);
stem(f,yy); %绘出 64点 DFT图
hold on;
plot(f,yy); %由 DFT通过绘制包络近似得到 DTFT
进行试验
输出图像:
由图可推得DFT所取的点数越多,DFT越逼近DTFT
故增加补零项,取1024个点程序如下:
x1=[2 -1 1 1];
N=1024;
x2=linspace(0,0,N-4);
x=[x1,x2];
n=0:(N-1);
w=0:0.01:2*pi/N*(N-1); %计算序列DTFT
X=x*exp(-j*n*w);
subplot(211); %绘制DTFT图像
plot(w*N/(2*pi),abs(X),k);
xlabel(Nw/2\pi);
title(DTFT[x(n)]);
xn=[2,-1,1,1];
xn=[xn,zeros(1,1020)]; %对 xn补零
y=fft(xn);
f=0:N-1;
subplot(212);
plot(f,abs(y),k); %绘制DFT图像
xlabel(k);
title(DFT[x(n)]);
输出图像:
由图可知,当N取1024点时,DFT已经可以很好的近似DTFT。
考察序列
x (n ) = cos(0 .48πn ) + cos(0 .52πn )
0 ≤ n ≤ 10时,用 DFT 估计 x (n )的频谱;将 x (n )补零加长到长度为 100点序列用 DFT估计 x (n )的频谱。要求画出相应波形。
0 ≤ n ≤ 100时,用 DFT 估计 x (n )的频谱,并画出波形
程序代码
n=[0:10];
x=cos(0.48*pi*n)+cos(0.52*pi*n); %x(n)频谱 n在 0到 10
y=fft(x);
subplot(3,1,1);
stem(n,y,filled);
xn=[x,zeros(1,90)]; %对 xn补零
yn=fft(xn);
hold on;
nn=[0:100];
subplot(3,1,2);
stem(nn,yn,filled);
n1=[0:100];
x1=cos(0.48*pi*n1)+cos(0.52*pi*n1); %x(n)频谱 n在 0到 100
y1=fft(x1);
subplot(3,1,3);
stem(n1,y1,filled);
进行试验
输出图像:
已知信号 x(t ) =0 .15 sin(2π f1t)+sin(2π f2t)- 0.1sin (2π f3t),其中 f1=1Hz,f2=2Hz,f3=3Hz。从x (t)的表达式可以看出,它包含三个频率的正弦波,但是,从其时域波形来看,似乎是一个正弦信号,利用 DFT 做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要
程序代码
f1=1;
f2=2;
f3=3;
t=0:0.01:2;
x=0.15*sin(2*pi*f1*t)+sin(2*pi*f2*t)-0.1*sin(2*pi*f3*t);
y=fft(x);
subplot(211);
plot(t,x);
subplot(212);
plot(t,abs(y))
进行试验
实验中,通
显示全部