当前位置:文档之家› 傅里叶变换的Matlab实现

傅里叶变换的Matlab实现


40
50 k
60
70
80
90
100
DFT函数
• • • • • • • function[Xk]=dft(xn,N) %计算N点DFT n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk;
IDFT函数
• • • • • • • function[xn]=idft(Xk,N) %计算N点逆DFT n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^(-nk); Xk=xn*WNnk/N;
例3.3题的DFT幅度和相位图
DFT的 幅 度 6 4
2
0
0
1
2
3
4
5
6
7
8
9
k DFT的 相 位 2 1 0 -1 -2
0
1
2
3
4 k
5
6
7
8
9
100点抽样
DFT的 幅 度 30 20
10
0
0
10
20
30
40
50 60 k DFT的 相 位
70
80
90
100
2 1 0 -1 -2
0
10
20
30
计算x(n)的DFT并画出幅度和相位
• • • • • • • • • • • %计算DFT和画图 N=6; X=dft(x,N); magX=abs(X) phaX=angle(X)*180/pi k=0:5; figure(2) subplot(2,1,1);stem(k,magX); title('DFT的幅度');xlabel('k'); subplot(2,1,2);stem(k,phaX); title('DFT的相位');xlabel('k');
4
2
0
0
0.5
1
1.5
2
2.5 3 k DFT的 相 位
3.5
4
4.5
5
0 -50 -100 -150 -200
0
0.5
1
1.5
2
2.5 k
3
3.5
4
4.5
5
例题3.3计算DFT
• • • • • • • • • • %计算余弦组合信号的DFT n=0:9;x=0.8*cos(0.47*pi*n)+0.4*cos(0.53*pi*n); N=10; X=dft(x,N); magX=abs(X),angX=angle(X) k=0:9; subplot(2,1,1);stem(k,magX); title('DFT的幅度');xlabel('k'); subplot(2,1,2);stem(k,angX); title('DFT的相位');xlabel('k');
DTFT的 幅 度 6
4
幅度
2 0 -1
-0.8
-0.6
-0.4
-0.2 0 0.2 以 为 单 位 的 频 率 DTFT的 相 位0.40.60.8
1
200 100
相位
0 -100 -200 -1
-0.8
-0.6
-0.4
-0.2 0 0.2 以 为 单 位 的 频 率
0.4
0.6
0.8
1
DFT的 幅 度 6
例3.2 计算6点矩形序列的离散时间 傅里叶变换并画出幅度和相位
• • • • • • • • • • • • • • %计算DTFT和DFT %输入序列 x=[1,1,1,1,1,1];n=0:5; %计算DTFT和画图 k=-200:200;w=(pi/100)*k; X=x*(exp(-j*pi/100)).^(n'*k); magX=abs(X);;angX=angle(X)*100/pi; figure(1) subplot(2,1,1);plot(w/pi,magX); axis([-1 1 0 6]);grid; title('DTFT的幅度');xlabel('以\pi为单位的频率');ylabel('幅度'); subplot(2,1,2);plot(w/pi,angX);grid; axis([-1 1 -200 200]);title('DTFT的相位'); xlabel('以\pi为单位的频率');ylabel('相位');
相关主题