数字信号处理实验二DFT 和FFT
更新时间:2024-03-29 02:04:01 阅读量: 综合文库 文档下载
- 数字信号处理实验二答案推荐度:
- 相关推荐
实验二DFT 和FFT
一.实验内容
1.认真复习周期序列DFS、有限长序列DFT 的概念、旋转因子的定义、以及DFS 和DFT的性质等有关内容;复习基2-FFT 的基本算法,混合基-FFT 的基本算法、Chirp-Z 变换的算法等快速傅立叶变换的方法。
2.掌握有限长序列的循环移位、循环卷积的方法,对序列共轭对称性的含义和相关内容加深理解和掌握,掌握利用DFT 分析序列的频谱特性的基本方法。
3.掌握FFT 算法的基本原理和方法、Chirp-Z 变换的基本原理和方法,掌握利用FFT 分析序列的频谱特性的方法。
4.熟悉利用MATLAB 进行序列的DFT、FFT 的分析方法。 二.实验内容
a. 设周期序列x(n)={ …,0,1,2,3,0,1,2,3,0,1,2,3,….},求该序列的离散傅立叶级数X",(k) = DFS[x(n)],并画出DFS 的幅度特性。 在matlab中新建函数dfs:
function [Xk]=dfs(xn,N) n=0:1:N-1; k=0:1:N-1;
Wn=exp(-j*2*pi/N); nk=n'*k; Wnk=Wn.^nk; Xk=xn*Wnk;
~~在matlab中输入以下代码:
xn=[0,1,2,3]; k=0:1:3; N=4;
- 1 -
Xk=dfs(xn,N); y=abs(Xk); stem(k,y);
title('周期序列的离散傅立叶级数');
生成图像如下:
由定义可知,对于周期序列,根据离散傅里叶级数公式即可求出,实验中显示了一个周期的傅里叶级数。
b. 设周期方波序列为
x(n)=??1(mN?n?mN?L-1)(m=0,?1,?2,....)
?0(mN?L?n?(m?1)N-1)其中N 为基波周期,L/N 是占空比。 (1) 用L 和N求| X",(k) |的表达式;
(2) 当L 和N 分别为:L=5,N=20;L=5,N=40;L=5,N=60 以及
- 2 -
L=7,N=60 时画出DFS 的幅度谱;
(3) 对以上结果进行讨论,总结其特点和规律。 实验代码:
L=5; N=20;
k=[-N/2:N/2];
xn=[ones(1,L),zeros(1,N-L)]; Xk=dfs(xn,N);
y=abs([Xk(N/2+1:N) Xk(1:N/2+1)]); subplot(4,1,1); stem(k,y);
title('L=5,N=20'); L=5; N=40;
k=[-N/2:N/2];
xn=[ones(1,L),zeros(1,N-L)]; Xk=dfs(xn,N);
y=abs([Xk(N/2+1:N) Xk(1:N/2+1)]); subplot(4,1,2); stem(k,y);
title('L=5,N=40'); L=5; N=60;
k=[-N/2:N/2];
xn=[ones(1,L),zeros(1,N-L)]; Xk=dfs(xn,N);
y=abs([Xk(N/2+1:N) Xk(1:N/2+1)]); subplot(4,1,3); stem(k,y);
title('L=5,N=60'); L=7; N=60;
k=[-N/2:N/2];
xn=[ones(1,L),zeros(1,N-L)]; Xk=dfs(xn,N);
y=abs([Xk(N/2+1:N) Xk(1:N/2+1)]); subplot(4,1,4); stem(k,y);
- 3 -
title('L=7,N=60');
生成图像如下:
由四组图对比可知,N越大,其频域抽样间隔越小,N为频域的重复周期。占空比L/N主要决定第一零点带宽(在一个周期内)。
c. 设有限长序列x(n) = {0,1,2,3},计算DTFT[x(n)]=X(ejω),并画出它
2?的幅度谱;然后利用kw1=4~X它等于实验a 中的(k)。
k,k=0,1,2,3对X(ejω)进行采样,并证明
X(ejω)=n????x(n)e??jwn=e-jw+2e-j2w+3e-j3w
X(ej0)=1+2+3=6;
- 4 -
X(ej2?/4)=-2+2j; X(ej4?/4)=2; X(ej6?/4)=-2-2j; 实验代码:
N=4;
xn=[0 1 2 3]; n=0:N-1; k=0:N-1;
w=2*pi*(0:2047)/2048;
Xw=exp(-j*w)+2*exp(-j*2*w)+3*exp(-j*3*w); subplot(211); plot(w/pi,abs(Xw)); title('X(ejw)幅度谱'); Xk=fft(xn,N); subplot(212);
stem(k,abs(Xk),'fill'); hold on;
plot(N/2*w/pi,abs(Xw));
生成图像如下:
- 5 -
对比第一题的结果可以看出,对离散傅里叶变换的频谱进行抽样,在满足采样定理的条件下,可以无失真的恢复原来的波形。
d. 序列x(n)=R4(n),计算DTFT[x(n)]=X(ejω),并绘制其幅度和相位谱。
(1) 计算x(n)的4 点DFT,并绘制DFT 的幅度与相位谱;
(2) 将x(n)补零形成8 点序列,计算8 点DFT,并绘制幅度与相位谱,求频率分辨率;
(3) 将x(n)补零形成16 点序列,计算16 点DFT,并绘制幅度与相位谱,求频率分辨率; 在matlab中新建函数dft:
- 6 -
function [Xk]=dft(xn,N) n=0:1:N-1; k=0:1:N-1;
Wn=exp(-j*2*pi/N); nk=n'*k; Wnk=Wn.^nk; Xk=xn*Wnk;
function [ xn ] = idft( Xk,N ) n=0:1:N-1; k=0:1:N-1;
Wn=exp(-j*2*pi/N); nk=n'*k;
Wnk=Wn.^(-nk); Xk=(Xk*Wnk)/N; End
(1)在matlab中输入以下序列:
x=[1 1 1 1]; N=4;
X=dft(x,N); subplot(2,1,1); stem(abs(X));
title('x(n)4点DFT对应的幅度谱'); subplot(2,1,2);
stem(angle(X)*180/pi);
title('x(n)4点DFT对应的相位谱');
生成图像如下:
- 7 -
(2)在matlab中输入以下序列:
x=[1 1 1 1];
x=[x,zeros(1,4)]; N=8;
X=dft(x,N); subplot(2,1,1); stem(abs(X));
title('x(n)补零成8点DFT对应的幅度谱'); subplot(2,1,2);
stem(angle(X)*180/pi);
title('x(n)补零成8点DFT对应的相位谱');
生成图像如下:
- 8 -
(3)在matlab中输入以下序列:
x=[1 1 1 1];
x=[x,zeros(1,12)]; N=16;
X=dft(x,N); subplot(2,1,1); stem(abs(X));
title('x(n)补零成16点DFT对应的幅度谱'); subplot(2,1,2);
stem(angle(X)*180/pi);
title('x(n)补零成16点DFT对应的相位谱');
- 9 -
生成图像如下:
由实验结果可以看出,对序列x(n)的N点DFT的物理意义是对其傅里叶变换的频谱在[0,2*pi]上进行N点等间隔的采样。 e. 序列x(n)=cos(0.48πn)+cos(0.52πn)
(1) 求x(n)的10 点DFT,并画出它幅度与相位谱; (2) 求x(n)的100 点DFT,并画出它幅度与相位谱; 根据实验结果,讨论DFT 进行谱分析的条件。 (1)实验代码:
n=0:1:99;
x=cos(0.48*pi*n)+cos(0.52*pi*n); n1=0:1:9; y1=x(1:1:10);
- 10 -
y2=dfs(y1,10); subplot(2,1,1) stem(n1,abs(y2));
title('x(n)10点DFT对应的幅度谱'); subplot(2,1,2);
stem(n1,angle(y2));
title('x(n)10点DFT对应的相位谱');
生成图像如下:
(2)实验代码:
n=0:1:99;
x=cos(0.48*pi*n)+cos(0.52*pi*n); y1=x(1:1:100); y2=dfs(y1,100); subplot(2,1,1) stem(n,abs(y2));
title('x(n)100点DFT对应的幅度谱'); subplot(2,1,2); stem(n,angle(y2));
- 11 -
title('x(n)100点DFT对应的相位谱');
生成图像如下:
f. 序列x(n)=5(0.9)nR11(n)
(1) 求循环反转序列x((-n))11,并绘制x(n)和x((-n))11 的波形;求两序列的DFT,验证DFT 的循环反转性质。
(2) 把序列x(n)分解成圆周共轭奇分量xoc(n)和圆周共轭偶分量xec(n),并求出对应的DFT,验证DFT 的圆周共轭对称性质。
(3) 绘制x((n+4))11R11(n)、x((n-3))15R15(n)和x((n-6))15 的波形,验证序列圆周移位性质。
在matlab中新建函数circevod和函数cirshftt: 函数circevod:
- 12 -
function [xec,xoc]=circevod(x) if any(imag(x)~=0)
error('x is not a real sequence') end
N=length(x); n=0:(N-1);
xec=0.5*(x+x(mod(-n,N)+1)); xoc=0.5*(x-x(mod(-n,N)+1));
函数cirshftt:
function y=cirshftt(x,m,N) if length(x)>N
error('N must be >= the length of x') end
x=[x zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);
(1)实验代码:
n=0:10;
x=5*(0.9).^n;
y=x(mod(-n,11)+1); figure(1);
subplot(2,1,1); stem(n,x);
title('x(n)时域波形'); subplot(2,1,2); stem(n,y);
title('循环反转序列x((-n)11时域波形');
X=dft(x,11); Y=dft(y,11); figure(2);
subplot(2,2,1); stem(n,real(X));
title('x(n)的DFT实部'); subplot(2,2,2); stem(n,imag(X));
title('x(n)的DFT虚部'); subplot(2,2,3); stem(n,real(Y));
title('循环反转序列x((-n)11的DFT实部');
- 13 -
subplot(2,2,4); stem(n,imag(Y));
title('循环反转序列x((-n)11的DFT虚部');
生成图像如下:
- 14 -
(2)实验代码:
n=0:10;
x=5*(0.9).^n;
[xec,xoc]=circevod(x); figure(1);
subplot(2,1,1); stem(n,xec);
title('圆周共轭奇分量'); subplot(2,1,2); stem(n,xoc);
title('圆周共轭偶分量');
X=dft(x,11);
[xec,xoc]=circevod(x); Xec=dft(xec,11); Xoc=dft(xoc,11); figure(2);
subplot(2,2,1); stem(n,real(X));
- 15 -
title('x(n)的DFT实部'); subplot(2,2,2); stem(n,imag(X));
title('x(n)的DFT虚部'); subplot(2,2,3); stem(n,real(Xec));
title('圆周共轭奇分量的DFT实部'); subplot(2,2,4);
stem(n,imag(Xoc));
title('圆周共轭偶分量的DFT虚部');
生成图像如下:
- 16 -
(3)实验代码:
n=0:10; n1=0:14; x=5*(0.9).^n; x1=[x,zeros(1,3)]; y1=cirshftt(x,-4,11); y2=cirshftt(x,3,15); y3=cirshftt(x,6,15); subplot(2,2,1); stem(n,x);
title('x(n)序列'); subplot(2,2,2); stem(n,y1);
title('x((n+4))11R11(n)序列'); subplot(2,2,3); stem(n1,y2);
title('x((n-3))15R15(n)序列'); subplot(2,2,4); stem(n1,y3);
- 17 -
title('x((n-6))15R15(n)序列');
生成图像如下:
由图可以看出,xe具有循环对称性,xo具有循环反对称性质。 g. 序列x1(n)={1,2,1},x2(n)={1,2,3,2},
(1) 编制程序在时域中直接计算4点循环卷积1 4 2y(n) = x (n)?x (n),并绘制波形图;
(2) 编制程序先计算x1(n)和x2(n)的4 点DFT,再利用IDFT 计算1 2 4 x (n)?x (n),比较结果以上两种计算结果是否一致?
(3) 计算1 2 5x (n)?x (n)和1 2 6x (n)?x (n),分析循环卷积点数N 对循环卷积的影响,并比较哪种循环卷积结果与线性卷积是一致的?总结出用循环卷积计算线性卷积的条件。
- 18 -
在matlab中新建函数circonvl:
function y=circonvl(x1,x2,N) if length(x1)>N
error('N must be >= the length of x1') end
if length(x2)>N
error('N must be >= the length of x2') end
x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1];
x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N
H(n,:)=cirshftt(x2,n-1,N); end
y=x1*H';
(1)实验代码:
x1=[1,2,1]; x2=[1,2,3,2];
y=circonvl(x1,x2,4); stem(y);
title('4点循环卷积波形图');
生成图像如下:
- 19 -
(2)实验代码:
x1=[1 2 1]; n1=0:2;
x2=[1 2 3 2]; n2=0:3;
y1=circonvl(x1,x2,4); x11=[1 2 1 0]; X1=fft(x11,4); X2=fft(x2,4); Y=X1.*X2; y2=ifft(Y,4); subplot(211); stem(n2,y1,'.'); grid on;
title('通过时域卷积求循环卷积') subplot(212); stem(n2,y2,'.'); grid on;
title('通过反变换方法求循环卷积')
- 20 -
生成图像如下:
(3)实验代码:
x1=[1,2,1]; x2=[1,2,3,2]; subplot(2,1,1)
y=circonvl(x1,x2,5); stem(y);
subplot(2,1,2)
y=circonvl(x1,x2,6); stem(y);
生成图像如下:
- 21 -
h. 序列x(n)=(n+1)R10(n),h(n)={1,0,-1},利用重叠保留法,编制程序用N=6 点的循环卷积计算线性卷积的值y(n)=x(n)*h(n),并与直接线性卷积结果进行比较。 在matlab中新建函数ovrlpsav:
function [y]=ovrlpsav(x,h,N) Lenx=length(x); M=length(h); M1=M-1; L=N-M1;
h=[h zeros(1,N-M)];
x=[zeros(1,M1),x,zeros(1,N-1)]; K=floor((Lenx+M1-1)/(L)); Y=zeros(K+1,N); for k=0:K
xk=x(k*L+1:k*K+N);
Y(k+1,:)=circonvl(xk,h,N);
- 22 -
end
Y=Y(:,M:N)'; y=(Y(:))';
实验代码:
n=0:9; N=6; x=n+1;
h=[1,0,-1];
y=ovrlpsav(x,h,N); stem(y);
生成图像如下:
i. 序列x(n)=R6(n),用快速傅立叶变换FFT 计算6 点DFT[x(n)]和8 点DFT[x(n)],绘制波形图并比较结果。 实验代码:
- 23 -
x1=ones(1,6); x2=[x1 0 0]; y1=fft(x1,6); y2=fft(x2,8); subplot(2,1,1); stem(abs(y1)); subplot(2,1,2); stem(abs(y2));
生成图像如下:
j. 设两个序列x(n)=(2n+3)R17(n),h(n)=(n+1)R4(n),采用重叠相加法,按分段长度L=7的FFT 计算线性卷积:y(n)=x(n)*h(n),并与直接线性卷积的结果进行比较。 实验代码:
n1=0:16; n2=0:3;
- 24 -
x=2*n1+3; h=n2+1;
y=conv(x,h); stem(y);
生成图像如下:
k. 设序列x(n)=(0.8)nR15(n),计算序列x(n)在单位园上的Chirp-z 变换,并与DFT[x(n)]的结果进行比较。 实验代码:
n=0:14;
x=((0.8).^n).*stepfun(n,0);
w=exp(-j*2*pi/15); %z = a*(w.^-(0:m-1)),所以w=exp(-j*2*pi/15)
y1=czt(x,15,w,1); %用函数czt(x,15,w,1)求Chirp-z变换,15是x的长度 y2=fft(x,15); %求FFT subplot(2,1,1); stem(n,abs(y1));
axis([0,14,0,6]); %定义横轴和纵轴的范围
- 25 -
title('Chirp-z变换的图形'); subplot(2,1,2); stem(n,abs(y2));
title('DFT变换的图形'); axis([0,14,0,6]);
生成图像如下:
l. 设信号x(t)=sin(f1t)+sin(f2t)+sin(f3t)+sin(f4t)+sin(f5t),其中f1=6Hz,f2=6.5Hz,f3=8Hz和f4=9Hz,f5=10Hz,对信号x(t)进行频率为40Hz 进行抽样,时域抽样400 点。 (1) 用Chirp-z 变换计算DFT[x(n)]; (2) 直接计算DFT[x(n)];
(3) 在5—12Hz 的频段范围求Chirp-z 变换。
- 26 -
实验代码:
N=400; n=0:399; fs=40;
w=exp(-j*2*pi/400); %z = a*(w.^-(0:m-1)),所以w=exp(-j*2*pi/400) xn1=sin(6*n*fs)+sin(6.5*n*fs)+sin(8*n*fs)+sin(9*n*fs)+sin(10*n*fs); y1=czt(xn1,400,w,1); %用函数czt(x,400,w,1)求Chirp-z变换,400是x的长度 y2=fft(xn1,400); %直接求FFT subplot(2,1,1); stem(n,abs(y1));
title('Chirp-z变换的图形'); subplot(2,1,2); stem(n,abs(y2));
title('DFT变换的图形');
生成图像如下:
三.实验心得
通过这次实验,进一步加强了对于课本是上理论知识的理解,熟悉了
- 27 -
利用MATLAB 进行序列的DFT、FFT 的分析方法。此外,对周期序列DFS、有限长序列DFT 的概念、旋转因子的定义、以及DFS 和DFT的性质有了更深的理解。实验过程中遇到了一些以前没有接触过的函数,通过查阅资料最终掌握了它们的使用方法。
- 28 -
正在阅读:
数字信号处理实验二DFT 和FFT03-29
电大1、公共舆论将此现象的矛头指向“国民素质低下”是否合适?08-01
磁盘阵列原理分析05-12
《传感器技术》第3版课后部分习题解答11-07
党建联建发言稿01-23
普通话读音2908-14
加强反腐倡廉教育工作意见06-02
XXX承接查验方案03-15
2019年地理一轮复习 专题 光照图的判读每日一题03-08
史上最全金融、经济类纪录片09-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 信号处理
- 实验
- 数字
- DFT
- FFT
- 2018-2019文明校园申报材料3篇-word范文(10页)
- 信号时域频域及其转换
- 改革开放以来中国特色社会主义理论与实践探索的主要成就与经验
- 西藏某太阳能光伏电站工程施工组织设计 - secret
- 现浇梁钢结构支架设计和结构计算
- 2010年软考网络工程师(上午题)全真模拟试卷(6)-中大网校
- 型钢悬挑脚手架及高支模安全专项施工方案 - 图文
- 中国石化北京设计院标准-装置管道设计器材代号和 精品
- 国家公务员考试申论备考:巧解关系类综合分析题
- 国际贸易进口总体流程图(FOB价)
- 《广告原理与实务》(01401)习题答案
- 我国上市公司的会计信息披露问题研究开题报告书 - 图文
- 缠中说禅线段划分解密 - 图文
- 危险源辨识工作阶段总结
- 2015医师定期考核人文300题
- 弘扬仲景文化,传承大医精神
- 江南大学现代远程教育2014年下半年课程考试大作业 社会保障与社
- 淀粉的工艺流程
- 《流体力学与流体机械》复习解析
- 清华大学发动机原理思考题答案第一至四及十章十一章(仅供参考)