当前位置:文档之家› 数字信号处理DFTMATLAB程序

数字信号处理DFTMATLAB程序

页脚内容1
实验三 频域信号处理
1. 实验目的
(1) 学习信号DFT 变换的matlab 实现;
(2) 学习fft 的matlab 实现;
(3) 验证DFT 的相关性质。

2. 思考题
(1) 若()()()sin sin 4x n n n ππ=+是一个128点的有限长序列,求其128点DFT 结果; 程序如下:
求DFT 变换矩阵A :
clc;
clear;
N=128;
A=dftmtx(N)
Ai=conj(dftmtx(N));
n=0:(N-1);
k=0:(N-1);
nk=n'*k;
Wn=(sin(pi/8)+sin(pi/4)).^nk
Wk=conj(Wn)/N;
求128点的DFT(分别用FFT函数和dftmtx函数)
clc;
clear;
N=128;
n=0:N-1;
x=sin(pi/8*n)+sin(pi/4*n);
subplot(3,1,1)
plot(n,x);
grid on
title('原图')
y1=fft(x,N);
A=dftmtx(N);
页脚内容2
y2=x(1:N)*A;
subplot(3,1,2)
plot(n,y1)
grid on
title('FFT')
subplot(3,1,3)
plot(n,y2)
grid on
title('dftmtx')
程序运行结果如图1所示:
原图
-13FFT
-13dftmtx
页脚内容3
页脚内容4
图 1
(2) 对模拟信号()()()2sin 45sin 8x t t t ππ=+,以0.01t n =,()0:1n N =-进行采样,求
a ) N =40点的FFT 幅度谱,从图中能否观察出两个频谱分量;
b ) 提高采样点数值N=128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的两个模拟频率和数字频率分别为多少?FFT 频谱分析结果和理论上是否一致?
程序如下:
clc;
clear;
N=40;
n=0:N-1;
t=0.01*n
x=2*sin(4*pi*t)+5*sin(8*pi*t);
subplot(2,1,1)
plot(x(1:N))
grid on
title('原图')
y1=fft(x,N);
subplot(2,1,2)
plot(n,y1(1:N))
grid on
title('40点采样')
结果如图2:
原图
40点采样
图2 clc;
clear;
N=128;
n=0:N-1;
页脚内容5
页脚内容6 t=0.01*n
x=2*sin(4*pi*t)+5*sin(8*pi*t);
subplot(2,1,1)
plot(x(1:N))
title('原图')
y1=fft(x,N);
subplot(2,1,2)
plot(n,y1(1:N))
title('128点采样')
结果如图3:


128点采样
页脚内容7
图 3
从图2,3中可以看出:N=40和128点的FFT 幅度谱中均出现了两个频谱分量.对于128点采样,11128,128
f T f ===,模拟频率分别为124,8ππΩ=Ω=,那么,数字频率分别为1122114,81283212816
T T ππωπωπ=Ω=⨯==Ω=⨯=。

(3) 输入为()2sin(/4)()x n n u n π=,020n ≤≤
系统采样响应为h(n)=δ(n)+2.5δ(n -1)+2.5δ(n -2)+δ(n -3) 010n ≤≤
验证 请用时域卷积及频域两种方法计算系统输出响应,并验证20点的循环卷积定理 程序如下:
clc;
clear;
N=20;
n1=0:19;
x=2*sin(n1*pi/4);
X1=fft(x,N)
n2=0:9;
h=zeros(1,length(n2));
h(1)=1;
h(2)=2.5;
h(3)=2.5;
h(4)=1;
X2=fft(h,N)
y1=conv(x,h);
y2=circonv(x,h,20)
subplot(2,1,1)
X=fft(y2,N)
stem(X);
title('X=fft(y2,N)')
xlabel('n')
ylabel('X')
subplot(2,1,2)
XK=X1.*X2
stem(XK);
title('XK=X1.*X2')
页脚内容8
页脚内容9 xlabel('n')
ylabel('XK')
suptitle('时域卷积')
X =fft(y2,N)n X 时域卷积
X K=X 1.*X 2n X K 图 4 clc;
clear;
N=20;
n1=0:19;
x=2*sin(n1*pi/4);
X1=fft(x,N)
n2=0:19;
h=zeros(1,length(n2));
h(1)=1;
h(2)=2.5;
h(3)=2.5;
h(4)=1;
X2=fft(h,N)
subplot(2,1,1)
X=fft(x.*h,N)
stem(X)
title('X=fft(x.*h,N)')
xlabel('n')
ylabel('X')
subplot(2,1,2)
XK=1/N*circonv(X1,X2,20)
stem(XK)
title('XK=1/N*circonv(X1,X2,20)')
xlabel('n')
页脚内容10
页脚内容11
ylabel('XK')
suptitle('频域卷积')
X =fft(x.*h,N)
n X
频域卷积
X K=1/N*circonv(X 1,X 2,20)n X K
图 5
(4) 若()
1944j n x n e π⎛⎫+ ⎪⎝⎭=,请计算实部与虚部对应的频域,并验证共轭对称性。

程序如下:
clc;
clear;
N=512;
e=2.73;
n=0:N-1;
x=4.*e.^(n/9.0).*(cos(pi/4*n)+i*sin(pi/4*n));
yx=fft(x,N);
xr=4.*e.^(n/9.0).*cos(pi/4*n);
xi=4.*e.^(n/9.0).*sin(pi/4*n);
yr=fft(xr,N);
yi=fft(i*xi,N);
subplot(2,1,1)
plot(n,yx)
grid on
title('x(n)的FFT')
subplot(2,1,2)
plot(n,yr+yi)
grid on
title('x(n)实部的FFT与虚部的FFT之和')
页脚内容12
26x(n)的FFT
26x(n)实部的FFT与虚部的FFT之和
图6
页脚内容13。

相关主题