实验3_离散信号的DTFT和DFT
- 格式:doc
- 大小:145.50 KB
- 文档页数:5
数字信号处理实验报告实验1 常见离散信号的MATLAB产生和图形显示【实验目的】加深对常用离散信号的理解;【实验内容】(1)单位抽样序列(取100个点)程序设计:N=100;x=[1 zeros(1,N-1)];stem(0:N-1,x)结果(2)单位阶跃序列(取100个点)程序设计:N=100;x=ones(1,N);stem(0:99,x);axis([0 100 0 2])结果102030405060708090100(3) 正弦序列(取100个点) 程序设计: N=100; n=0:99; f=100; Fs=1000; fai=0.2*pi; A=2;x=A*sin(2*pi*f*n/Fs+fai); stem(n,x); grid 结果0102030405060708090100(4)复正弦序列(取100个点)程序设计:N=100;n=0:99;w=0.2*pi;x=exp(j*w*n);stem(n,x);结果(5)复指数序列(取41个点)程序设计:>> n=0:40;>> c=-0.02+0.2*pi*i;>> x=exp(c*n);>> subplot(2,1,1);>> stem(n,real(x));>> subplot(2,1,2);>> stem(n,imag(x));结果05101520253035400510152025303540(上部为实部,下部为虚部)(6)指数序列(取100个点)程序设计:>> n=0:99;>> a=0.5;>> x=a.^n;>> stem(n,x);结果:【实验要求】讨论复指数序列的性质。
由(5)的图形结果可以看出,复指数序列实部和虚部均为按指数衰减(上升)的序列,两者的均是震荡的,实部震荡周期与指数的实部有关,虚部震荡周期与指数的实虚部有关。
三、离散傅立叶变换(DFT)---有限长序列的离散频谱表示1三、离散傅立叶变换(DFT) ----有限长序列的离散频谱表示从有限长序列的DTFT到DFT 从DFS到DFT DFT的性质21、从有限长序列的DTFT到DFT X (e ) = ∑ x ( n)e = X (Ω )jΩ N −1 n =0 − jΩn非周期信号的频谱都是频率的连续函数,无法用 计算机进行计算。
离散信号的DTFT,它是Ω的连续周期函数,尽 管在理论上有重要意义,但在计算机上实现有困 难。
为此,需要一种时域和频域上都是离散的傅 里叶变换对,实现计算机的快速计算,这就是离 散傅里叶变换 DFT。
31 x ( n) = 2π∫2π0X (Ω)ejΩndΩ能量有限、时间长度为L的有限长序列的DTFT为X (Ω) = ∑ x(n)e − jΩnkΩ0 = k2π / N →Ω频率离散化L −1 2π ) = ∑ x(n)e − jk 2π n / N X (k N n=0n =0 L −1频率采样点数N已知,2π/N为定数X ( k ) = ∑ x ( n )en=0L −1− jk 2π n / NN点DFT是有限长序 列(L≤N)的DTFT 的N点均匀取样值, 也就是非周期序列 频谱的样值。
42、从DFS到DFTπ 1 N −1 1 N −1 − j 2N nk − % (k ) = % N ( n )e % N (n) wNnk XN = ∑x ∑x N n=0 N n=0 DFS: 2π N −1 N −1 j kn % (k )e N = X (k ) wnk % % x ( n) = XN∑k =0N∑k =0NN% 为了计算的方便,通常将1/N移到 xN (n)中,而且二者所具有的物理意义和性质都相同% X N (k ) =% ∑xn=0N −1N −1N( n )ejπ − j 2N nk1 % % x N ( n ) = ∑ X N ( k )e N k =02π kn N52、从DFS到DFT设DFS % xN (n) ←⎯⎯ X N (k ) → %,令RN(n) 为矩形 % ⎧ X N (k ), k = 0 ~ N − 1 序列 % X (k ) = RN (k ) X N (k ) = ⎨ 0, k = 其他 ⎩% ⎧ xN (n), n = 0 ~ N − 1 % x(n) = RN (n) xN (n) = ⎨ 0, n = 其他 ⎩DFT又可看作以 有限长序列x(n) 为一个周期,进 行周期延拓后所 形成的周期序列 xp(n)的离散频谱x(n)、X(k)分别称作X ( k ) = ∑ x ( n) wn=0 N −1 − nk N% % xN (n)、X N (k ) 的主值1 x ( n) = Nnk X (k ) wN ∑ k =0 N −1DFTIDFT6x p (n)−Nn0DFSX p (k )N2N−N 20x(n)0N 2NknNDFTX (k )0Nk7DFT小结DFT 是 DFS 的主值序列 DFS 是严格按傅立叶分析的概念得来的 DFT 只是一种借用形式,一种算法 用DFT 计算信号的频谱时 采样频率必须大于两倍的信号最高截止 频率 对周期信号要取一个整周期83、DFT的性质线性 对称性 圆周位移 圆周卷积9(1) 线性若DFT x1 (n) ←⎯⎯ X 1 (k ) →DFT x2 (n) ←⎯⎯ X 2 (k ) →如果x1(n)、x2(n) 如果x1(n)、x2(n) 长度不同,长度 长度不同,长度 短的序列要补 短的序列要补 零,使它与另一 零,使它与另一 序列长度相同 序列长度相同那么DFT ax1 (n) + bx2 (n) ←⎯⎯ aX 1 ( k ) + bX 2 ( k ) →1011(2)对称性若x(n)为实序列,则X(k)具有共轭对称性:若x(n)为虚序列,则X(k)具有共轭反对称性:(N-k)mod N 表示“N -k 对N 取模”,即:如果N -k 写成N-k=qN+l ,q 、l 为整数,,则有()()(()mod )X k X k X N k N ∗∗=−=−()()(()mod )X k X k X N k N ∗∗=−−=−−0l N ≤≤()mod N k N l−=12(3)圆周位移序列x(n)的圆周位移定义 n 0是位移值,R N (n)是矩形序列%00(()mod )()()()N N N x n n N R n x n n R n −=−圆周位移的概念n若)()()(k H k X k Y =17例6计算x 1(n)、x 2(n)的N 点圆周乘积,其中解:x 1(n)、x 2(n)的N 点DFT 为11200()()0N nk Nn N k X k X k w −−==⎧===⎨⎩∑其他12101()()0n N x n x n ≤≤−⎧==⎨⎩其他 因此,有2120()()()0k N X k X k X k =⎧===⎨⎩其他x 1(n)、x 2(n)的N 点圆周卷积是X(k)的反DFT 变换01()0n N N x n ≤≤−⎧=⎨⎩其他频域圆周卷积定理若19四、快速傅立叶变换(FFT)DFT 的计算量DFT 的特点FFT 的基本思想FFT 应用中的注意事项1 DFT22π222、DFT 的特点(3)由于DFT 计算量与N 成几何级数增长,可以将长序列分解成多个短序列信号,然后分别求各个短序列的DFT ,最后将它们组合,得到原序列的DFT 。
实验一 离散时间系统的时域分析一、实验目的1. 运用MATLAB 仿真一些简单的离散时间系统,并研究它们的时域特性。
2. 运用MATLAB 中的卷积运算计算系统的输出序列,加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
二、实验原理离散时间系统其输入、输出关系可用以下差分方程描述:∑=∑=-=-M k k N k k k n x p k n y d 00][][当输入信号为冲激信号时,系统的输出记为系统单位冲激响应 ][][n h n →δ,则系统响应为如下的卷积计算式:∑∞-∞=-=*=m m n h m x n h n x n y ][][][][][ 当h[n]是有限长度的(n :[0,M])时,称系统为FIR 系统;反之,称系统为IIR 系统。
在MA TLAB 中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。
例1clf;n=0:40;a=1;b=2;x1= 0.1*n;x2=sin(2*pi*n);x=a*x1+b*x2;num=[1, 0.5,3];den=[2 -3 0.1];ic=[0 0]; %设置零初始条件y1=filter(num,den,x1,ic); %计算输入为x1(n)时的输出y1(n)y2=filter(num,den,x2,ic); %计算输入为x2(n)时的输出y2(n)y=filter(num,den,x,ic); %计算输入为x (n)时的输出y(n)yt= a*y1+b*y2;%画出输出信号subplot(2,1,1)stem(n,y);ylabel(‘振幅’);title(‘加权输入a*x1+b*x2的输出’);subplot(2,1,2)stem(n,yt);ylabel(‘振幅’);title(‘加权输出a*y1+b*y2’);(一)、线性和非线性系统对线性离散时间系统,若)(1n y 和)(2n y 分别是输入序列)(1n x 和)(2n x 的响应,则输入)()()(21n bx n ax n x +=的输出响应为)()()(21n by n ay n y +=,即符合叠加性,其中对任意常量a 和b 以及任意输入)(1n x 和)(2n x 都成立,否则为非线性系统。
实验三 离散信号的DTFT 和DFT一、实验目的:加深对离散信号的DTFT 和DFT 的及其相互关系的理解。
DFT-Discrete Fourier Transform 离散傅立叶变换DTFT- Discrete Time Fourier Transform 离散时间傅立叶变换二、实验原理:1、傅里叶级数任何周期函数都可以用正弦函数的级数表示,有周期函数: )2()(L x f x f +=那么: ∑∞=++=10)sin cos (2)(k k k Lxk b L x k a a x f ππ根据欧拉公式: )(2-)(21)sin(Lx k jLx k jLx k jLxk jeej eejL x k πππππ---=-=,)(21)cos(Lx k j Lxk je eL x k πππ-+=可以得:∑∞=--⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛++=10222)(k L xk j L x k j n L x k j L x k j ne e bj e e a a x f ππππ ∑∞=-⎥⎦⎤⎢⎣⎡++-+=10222k L x k j nn L x k j n n e jb a e jb a a ππ 将20a 看成L x j e c c π000=,2n n n jb a c -=,2nn n jb a c -=-则傅里叶级数的复指数形式: ∑∞-∞==k Lxk jkec x f )()(π或者:dx e x f L c Lxk j LLk π--⎰=)(21复指数序列n jw e n x 0)(=定义,角频率Lk πω=0。
2、离散时间傅里叶变换DTFT计算机只能处理数字信号,首先需要将模拟信号在时域离散化,即在时域对模拟信号采样, 再根据在一个域的相乘等于另一个域的卷积,得到序列x[n] 的DTFT 定义:∑=∞-∞=-n jn ωj ωx[n]e )X(e)(n x 是离散时间信号,得到的频谱是连续的。
实验一 常见离散信号的MATLAB 产生和图形显示实验目的:加深对常用离散信号的理解; 实验原理:1.单位抽样序列⎩⎨⎧=01)(n δ≠=n n 在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n kn2.单位阶跃序列⎩⎨⎧01)(n u00<≥n n 在MATLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列n j e n x ϖ=)(在MATLAB 中)**ex p(1:0n w j x N n =-=5.指数序列n a n x =)(在MATLAB 中na x N n .^1:0=-=实验内容:编制程序产生上述5种信号(长度可输入确定),并绘出其图形。
实验要求:讨论复指数序列的性质。
实验过程: 1. 单位冲击序列:>> n=0:10;>> x1=[1 zeros(1,10)];>> x2=[zeros(1,8) 1 zeros(1,8)]; >> subplot(1,2,1); >> stem(n,x1);>> xlabel ('时间序列n'); >> ylabel('幅度');>> title('单位冲激序列δ(n )'); >> subplot(1,2,2); >> stem(x2);>> xlabel('时间序列n'); >> ylabel('幅度');>> title('延时了8个单位的冲激序列δ(n-8)'); >>>> n=0:10;>> u=[ones(1,11)];>> stem(n,u);>> xlabel ('时间序列n');>> ylabel('信号幅度');>> title('单位阶跃序列u(n)');>>3.正弦序列:>> n=1:30;>> x=2*sin(pi*n/6+pi/4);>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('正弦函数序列x=2*sin(pi*n/6+pi/4)'); >>>> n=1:30;>> x=5*exp(j*3*n);>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('复指数序列x=5*exp(j*3*n)');>>5.指数序列:>> n=1:30;>> x=1.8.^n;>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('指数序列x=1.8.^n');>>复指数序列的周期性讨论:为了研究复指数序列的周期性质,我们分别作了正弦函数x1=1.5sin(0.3πn)和x2=sin(0.6n); 的幅度特性图像。
信息科学与技术学院实验报告一、实验综述1、实验目的及要求应用离散傅里叶级变换(DFT),分析离散信号想x[k]的频谱。
深刻理解DFT分析离散信号频谱的原理。
掌握改善分析过程中产生的误差的方法。
2、实验仪器、设备或软件计算机,MATB7.4.0二、实验过程(实验步骤、数据记录)1、验证性试验。
2、程序设计试验。
⑴周期序列由3个频率组成,x[k]=cos(7πk/16)+cos(9πk/16)+cos(πk/2),利用FFT分析频谱。
如何选取FFT的点数计算N?这三个频率分别对应FFT计算结果X [m]的哪些点?若选取的N不合适,FFT计算的频率X[m]会出现什么情况?⑵离散序列x[k]=cos(2πk/16)+0.75cos(2.3πk/15),0≤k≤63,利用FFT分析其频谱。
①对x[k]做N=64点FFT,绘制信号的频率,能够分辨出其中的两个频谱吗?②对x[k]补零到N=256点后计算FFT,能够分辨出1其中的两个频率吗?③选用非矩形窗计算FFT,能够分辨出其中的两个频率吗?④若不能够很好的分辨出其中的两个频率,应采取哪些措施?三、结论1、实验结果1、证性试验:2、程序设计实验:⑴①N应该选取所有因子的公倍数32;②该周期N=32,基频 W0=p/16;N=32;k=0:N-1;x=cos(pi*7*k/16)+cos(9*pi*k/16)+cos(8*pi*k/16); X=fft(x,N);subplot(2,1,1);stem(k-N/2,abs(fftshift(X)));ylabel('Magnitude');xlabel('Frequency(rad)');subplot(2,1,2);stem(k-N/2,angle(fftshift(X)));ylabel('Phase');③若N的值选取不合适,则无法区分两个频率。
⑵可以分辨出两个频率,如下:①该周期N=64,基频w0=p/15;N=64;k=0:N-1;x=cos(pi*2/15*k)+0.75*cos(2.3*pi/16*k);X=fft(x,N);subplot(2,1,1);stem(k-N/2,abs(fftshift(X)));ylabel('Magnitude');xlabel('Frequency(rad)');subplot(2,1,2);stem(k-N/2,angle(fftshift(X)));ylabel('Phase');xlabel('Frequency(rad)');②对x[k]补零到256点后计算FFT;可以分辨出两个频率,如下:N=256;k=0:N-1;x=cos(pi*2*k/15)+0.75*cos(2.3*pi*k/15);X=fft(x,N);subplot(2,1,1);stem(k-N/2,abs(fftshift(X)));ylabel('Magnitude');xlabel('Frequency(rad)');subplot(2,1,2);stem(k-N/2,angle(fftshift(X)));ylabel('Phase');xlabel('Frequency(rad)');③采用窗函数,可以分辨出两个频率,如下:汉宁窗:N=64;w=hanning(N);k=0:N-1;n=cos(pi*2*k/15)+0.75*cos(2.3*pi*k/15);a=w.*n';X=fft(a,N);subplot(2,1,1);stem(k,abs(fftshift(X)));ylabel('Magnitude');xlabel('Frequency(rad)');subplot(2,1,2);stem(k,angle(fftshift(X)));ylabel('Phase');xlabel('Frequency(rad)');汉明窗:N=64;w=hamming(N);k=0:N-1;n=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k);a=w.*n';X=fft(a,N);subplot(2,1,1);stem(k-N/2,abs(fftshift(X)));ylabel('Magnitude');xlabel('Frequency(rad)');subplot(2,1,2);stem(k-N/2,angle(fftshift(X)));ylabel('Phase');xlabel('Frequency(rad)');④应该增加N的值,使其为因子周期的公倍数。
实验4 离散信号的DTFT 和DFT 及其FFT 算法的应用实验目的:1 加深对离散信号的DTFT 和DFT 及其相互关系的理解。
2 加深对离散信号的FFT 算法的运用。
实验原理:1 序列x[n]的DTFT 定义:∑=∞-∞=-n jn ωj ωx[n]e)X(eN 点序列x[n]的DFT 定义:∑∑-=-=-===1122][][)(][N n knNN n knNjkN j W n x en x eX k X ππ在MATLAB 中,对形式为ωωωωωωωjN N j jM M j j j j ed ed de p e p p eD e p eX ----++++++==......)()()(1010的DTDFT 可以用函数H=Freqz (num ,den ,w )计算;可以用函数U=fft (u ,N )和u=ifft (U ,N )计算N 点序列的DFT 正、反变换。
2 N 点序列的DFT 和IDFT 变换定义式如下:1[][]N k nNn X k x n W -==∑, 11[][]N k nNk x n X k W N--==∑利用旋转因子2j n kk nNNW eπ-=具有周期性,可以得到快速算法(FFT )。
在MATLAB 中,可以用函数X=fft (x ,N )和x=ifft (X ,N )计算N 点序列的DFT 正、反变换。
实验内容:1、分别计算16点序列 150,165cos)(≤≤=n n n x π的16点和32点DFT ,绘出幅度谱图形,并绘出该序列的DTFT 图形。
2、2N 点实数序列⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧-=+=n N n n Nn N n x 其它,012,...,2,1,0),192cos(21)72cos()(ππ N=64。
用一个64点的复数FFT 程序,一次算出N n x DFT k X 2)]([)(=,并绘出)(k X 。
3、已知某序列)(n x 在单位圆上的N=64等分样点的Z 变换为63,...,2,1,0,8.011)()(/2=-==-k ek X z X Nk j k π用N 点IFFT 程序计算)]([)(_k X IDFT n x =,绘出)(_n x 。
实验报告
实验课程:数字信号处理
实验内容:实验3 离散信号的DTFT和DFT
2013年6 月3日
一、实验目的:加深对离散信号的DTFT 和DFT 的及其相互关系的理解。
二、实验原理:
序列x (n )的DTFT 定义:
∑
∞
-∞
=-=
n jn ω
j ω
e n x )X(e )( N 点序列x (n )的DFT 定义:
∑∑-=-=-===10
1
22)()()()(N n kn
N
N n kn N
j
k N
j
W n x e
n x e
X k X ππ
在MATLAB 中,对形式为
ω
ωωωωω
ωjN N j jM M j j j j e
d e d d e p e p p e D e p e X ----++++++==......)()()(1010 的DTFT 可以用函数H=Freqz (num ,den ,w )计算给定的L 个离散频率点w L 处的数值;可以用函数U=fft (u ,N )和u=ifft (U ,N )计算N 点序列的DFT 正、反变换。
三、实验内容及步骤:
1. 在范围0≤ω≤π内(任取8个数值点)求出如下有限长序列的DTFT :
X(n)=[1 3 5 7 9 11 13 15 17 19 21]
请分别作图画出其实部、虚部及模值,并得到其相位谱图形。
2.计算序列 n n x 16
5cos )(π
= 的16点和32点DFT ,绘出幅度谱图形及该序列的DTFT 图形。
有限长序列的DTFT
程序代码:
w=[pi/8 pi/4 pi*3/8 pi/2 pi*5/8 pi*3/4 pi*7/8 pi]; num=[1 3 5 7 9 11 13 15 17 19 21]; h=freqz(num,1,w); subplot(2,2,1); stem(w/pi,abs(h)); title('幅度谱') xlabel('数字频率');
ylabel('振幅');
subplot(2,2,2); stem(w/pi,real(h)); title('虚部');
xlabel('数字频率'); ylabel('振幅');
subplot(2,2,3); stem(w/pi,imag(h)); title('实部');
xlabel('数字频率'); ylabel('振幅');
subplot(2,2,4); stem(w/pi,angle(h)); title('相位谱'); xlabel('数字频率'); ylabel('相位');
实验结果:
有限长序列的FFT和DTFT
程序代码:
w=[pi/8 pi/4 pi*3/8 pi/2 pi*5/8 pi*3/4 pi*7/8 pi];
n=0:15; % 16点的算法
num=cos(5*pi*n/6);
h=freqz(num,1,w);
subplot(2,2,1);
stem(w/pi,abs(h));
title('DTFT幅度谱')
xlabel('数字频率');
ylabel('振幅'); grid;
n=0:15;
x=cos(5*pi*n/6);
k=fft(x);
subplot(2,2,2);
stem(n, abs (k));
title('FFT幅度谱')
xlabel('数字频率');
ylabel('振幅');grid;
% DTFT和FFT算出的幅值轮廓一致,不过FFT的数字频率0~2π,DTFT只是0~π% 32点的算法同上
实验结果:
四、实验总结与分析:
DFT和DTFT之间的关系:时域的离散导致频域的周期性,时域的周期性导致频域的离散。
离散傅立叶变换的步骤是这样的:对于输入的一个长度有限的离散时间信号,我们对它进行周期延拓,就是把它变成一个长度无限的周期信号;变成了周期信号,就可以计算其傅立叶级数。
由于输入信号是离散的,所以得到的傅立叶级数是周期的。
将这个傅立叶级数截取一个周期得到的有限长的序列就是DFT的谱。
也可以将DFT看成在DTFT的一个周期内采样得到的。
DTFT是离散时间傅立叶变换,与普通的傅立叶变换没有多大差别,只是将积分换成求和。