《数字信号处理》实验二 DFT频谱计算+周期卷积代替线性卷积--预做实验报告
- 格式:doc
- 大小:94.00 KB
- 文档页数:4
数字信号处理_实验报告__实验⼆_应⽤快速傅⽴叶变换对信号进⾏频谱分析数字信号处理实验报告实验⼆应⽤快速傅⽴叶变换对信号进⾏频谱分析2011年12⽉7⽇⼀、实验⽬的1、通过本实验,进⼀步加深对DFT 算法原理合基本性质的理解,熟悉FFT 算法原理和FFT ⼦程序的应⽤。
2、掌握应⽤FFT 对信号进⾏频谱分析的⽅法。
3、通过本实验进⼀步掌握频域采样定理。
4、了解应⽤FFT 进⾏信号频谱分析过程中可能出现的问题,以便在实际中正确应⽤FFT 。
⼆、实验原理与⽅法1、⼀个连续时间信号)(t x a 的频谱可以⽤它的傅⽴叶变换表⽰()()j t a a X j x t e dt +∞-Ω-∞Ω=?2、对信号进⾏理想采样,得到采样序列()()a x n x nT =3、以T 为采样周期,对)(n x 进⾏Z 变换()()n X z x n z +∞--∞=∑4、当ωj ez =时,得到序列傅⽴叶变换SFT()()j j n X e x n e ωω+∞--∞=∑5、ω为数字⾓频率sT F ωΩ=Ω=6、已经知道:12()[()]j a m X e X j T T Tωπ+∞-∞=-∑ ( 2-6 ) 7、序列的频谱是原模拟信号的周期延拓,即可以通过分析序列的频谱,得到相应连续信号的频谱。
(信号为有限带宽,采样满⾜Nyquist 定理)8、⽆线长序列可以⽤有限长序列来逼近,对于有限长序列可以使⽤离散傅⽴叶变换(DFT )。
可以很好的反映序列的频域特性,且易于快速算法在计算机上实现。
当序列()x n 的长度为N 时,它的离散傅⾥叶变换为:1()[()]()N kn N n X k DFT x n x n W -===∑其中2jNN W eπ-=,它的反变换定义为:11()[()]()N kn Nk x n IDFT X k X k WN--===∑⽐较Z 变换式 ( 2-3 ) 和DFT 式 ( 2-7 ),令kN z W -=则1()()[()]|kNN nkN N Z W X z x n W DFT x n ---====∑ 因此有()()|kNz W X k X z -==kN W -是Z 平⾯单位圆上幅⾓为2k的点,也即是将单位圆N 等分后的第k 点。
西安郵電學院数字信号处理课内实验报告书系部名称:学生姓名:专业名称:班级:学时号:间:计算机系常成娟电子信息科学与技术0603040620952008-11-23实验二:用FFT 作谱分析一、实验目的:(1)进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质)。
(2)熟悉FFT 算法原理和FFT 子程序的应用。
(3)学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
二、实验步骤:(1)复习DFT 的定义、性质和用DFT 作谱分析的有关内容。
(2)复习FFT 算法原理与编程思想,并对照DIT —FFT 运算流图和程序框图,读懂本实验提供的FFT 子程序。
(3)编制信号产生子程序,产生以下典型信号供谱分析用:x 1(n =R4(n⎧n +1,0<=n <=3⎪x 2(n =⎨8-n , 4<=n <=7⎪0, 其它n ⎩⎧4-n ,0<=n <=3⎪x 3(n =⎨n -3, 4<=n <=7⎪0, 其它n ⎩x 4(n =cos(pi/4*n x 5(n =sin(pi/8*nx 6(t =cos(pi*8*t+ sin(pi*16*t+cos(20*pi*t应当注意,如果给出的是连续信号xa(t,则首先要根据其最高频率确定采样速率fs 以及由频率选择采样点数N ,然后对其进行软件采样(即计算x(n=xa(nT,0<=n<=N-1), 产生对应序列x(n。
对信号x6(t,频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。
对周期序列,最好截取周期的整数倍进行分析,否则有可能产生较大的分析误差。
请实验者根据DFT 的隐含周期性思考这个问题。
(4)编写主程序。
下图给出了主程序框图,供参考。
实验报告课程名称: 数字信号处理 指导老师: 成绩:__________________ 实验名称:DFT/FFT 的应用之一 − 确定性信号谱分析 实验类型:__验证_ 同组学生姓名: —一、实验目的和要求谱分析即求信号的频谱。
本实验采用DFT/FFT 技术对周期性信号进行谱分析。
通过实验,了解用X(k)近似地表示频谱X(ej ω)带来的栅栏效应、混叠现象和频谱泄漏,了解如何正确地选择参数(抽样间隔T 、抽样点数N )。
二、实验内容和步骤2-1 选用最简单的周期信号:单频正弦信号、频率f=50赫兹,进行谱分析。
2-2 谱分析参数可以从下表中任选一组(也可自定)。
对各组参数时的序列,计算:一个正弦周期是否对应整数个抽样间隔?观察区间是否对应整数个正弦周期?2-3 对以上几个正弦序列,依次进行以下过程。
2-3-1观察并记录一个正弦序列的图形(时域)、频谱(幅度谱、频谱实部、频谱虚部)形状、幅度谱的第一个峰的坐标(U ,V )。
2-3-2 分析抽样间隔T 、截断长度N (抽样个数)对谱分析结果的影响; 2-3-3 思考X(k)与X(e j ω)的关系;2-3-4 讨论用X(k)近似表示X(ej ω)时的栅栏效应、混叠现象、频谱泄漏。
三、主要仪器设备MATLAB 编程。
专业:________________ 姓名:________________学号:________________ 日期:________________ 地点:________________实验名称:_______________________________姓名:______________学号:__________________ P. 四、操作方法和实验步骤(参见“二、实验内容和步骤”)五、实验数据记录和处理列出MATLAB程序清单,加注释。
六、实验结果与分析6-1 实验前预习有关概念,并根据上列参数来推测相应频谱的形状、谱峰所在频率(U)和谱峰的数值(V)、混叠现象和频谱泄漏的有无。
《数字信号处理》课程设计报告任课教师:指导教师:学生学号:6学生姓名:所学专业:电子信息工程2011年06月22日目录一、设计题目二、设计目的三、设计原理四、实现方法(包括MATLAB算法原理等)五、设计内容及要求(含有设计源程序)六、设计结果及改进建议(画出所有设计曲线,并加以说明)七、回答思考题八、设计体会九、参考文献一、 设计题目设计一、DFT 在信号频谱分析中的应用 设计八 、窗函数法设计FIR 数字低通滤波器二、设计目的(一)设计一、DFT 在信号频谱分析中应用的原理 1. 熟悉DFT 的性质。
2. 加深理解信号频谱的概念及性质。
3. 了解高密度谱与高分辨率频谱的区别。
(二)设计八 、窗函数法设计FIR 数字低通滤波器 1. 熟悉设计线性相位数字滤波器的一般步骤。
2. 掌握用窗函数法设计FIR 数字滤波器的原理和方法。
3. 熟悉各种窗函数的作用以及各种窗函数对滤波特性的影响。
4. 学会根据指标要求选取合适的窗函数。
设计低通FIR 滤波器的指标: 通带最大波动0.25,p R dB =,0.2p ωπ=阻带最小衰减50,s A dB =,0.3s ωπ=三、设计原理(一)设计一、DFT 在信号频谱分析中应用的原理所谓信号的频谱分析就是计算信号的傅里叶变换。
连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。
工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。
数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。
离散傅里叶变换(DFT )定义:设有限长序列x (n) 长为N (0≤n ≤N-1),其离散傅里叶变换是一个长为N 的频率有限长序列(0≤k ≤N-1),其正变换为()()[]()W nkN N n n x n x DFT k X ∑-===10 0≤k ≤N-1(W e N jNπ2-=)离散傅里叶变换的实质是:把有限长序列当做周期序列的主值序列进行DFS 变换,x(n)、X(k)的长度均为N,都是N个独立值,因此二者具有的信息量是相等的。
实验三:用FFT对信号作频谱分析10.3.1实验指导1.实验目的学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
2.实验原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2 /N,因此要求2 /N D。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3•实验步骤及内容(1)对以下序列进行谱分析。
X1 (n) RHn)n 1, 0 n 3X2 (n) 8 n, 4 n 70 ,其它n4 n, 0 n 3X3( n) n 3, 4 n 70, 其它n选择FFT的变换区间N为8和16两种情况进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论。
(2)对以下周期序列进行谱分析。
x4(n) cos—n44x5(n) cos( n/4) cos( n/8)选择FFT的变换区间N为8和16两种情况分别对以上序列进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论。
(3)对模拟周期信号进行谱分析x6(t) cos8 t cos16 t cos20 t选择采样频率F s 64Hz ,变换区间N=16,32,64 三种情况进行谱分析。
实验二 利用DFT 计算线性卷积一、实验目的1.掌握利用FFT 计算线性卷积的原理及具体实现方法。
2.加深理解重叠相加法和重叠保留法。
3.考察利用FFT 计算线性卷积各种方法的适用范围。
二、实验设备与环境计算机、MATLAB 软件环境三、实验基础理论1、线性卷积与圆周卷积设)(n x 为L 点序列,)(n h 为M 点序列,)(n x 和)(n h 的线性卷积为:∑∞-∞=-==m m n h m x n h n x n y )()()(*)()()(n y 的长度为:L+M-1,)(n x 和)(n h 的N 点圆周卷积为:)())(()()(10n R m n h m x n y N N m N -=∑-= 其中:1-+≥L M N此时圆周卷积等于线性卷积,而圆周卷积可利用FFT 计算。
2、快速卷积利用FFT 计算线性卷积步骤如下:(1)为了使线性卷积可以利用圆周卷积来计算,必须选择;同时为了能使用基2-FFT 完成卷积运算,要求γ2=N 。
采用补零的办法是)(n x 和)(n h 的长度均为N 。
(2)计算)(n x 和)(n h 的N 点FFT)()()()(k H n h k X n x FFTFFT →→(3)组成卷积 )()()(k H k X k Y =(4)利用IFFT 计算IDFT ,得到线性卷积y(n)(k)()IFFT Y y n −−−→3、分段卷积我们考察单位取样响应为)(n h 的线性系统,输入为)(n x ,输出为)(n y ,则)(*)()(n h n x n y =当输入序列时再开始进行卷积,会使输出相对输入有较大的延时,再者如果序列太长,需要大量的存储单元。
为此,我们把,分别求出每段的卷积,合在一起其到最后的总输出。
这种方法称为分段卷积。
分段卷积可细分为重叠相加法和重叠保留法。
重叠保留法:设)(n x 的长度为X N ,)(n h 的长度为M 。
我们把序列)(n x 分成多段N 点序列)(n x i ,每段与前一段重叠M-1个样本。
数字信号处理课程实验报告实验一 离散时间信号和系统响应一. 实验目的1. 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解2. 掌握时域离散系统的时域特性3. 利用卷积方法观察分析系统的时域特性4. 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号及系统响应进行频域分析二、实验原理1. 采样是连续信号数字化处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性的变化以及信号信息不丢失的条件,而且可以加深对离散傅里叶变换、Z 变换和序列傅里叶变换之间关系式的理解。
对连续信号()a x t 以T 为采样间隔进行时域等间隔理想采样,形成采样信号: 式中()p t 为周期冲激脉冲,()a x t 为()a x t 的理想采样。
()a x t 的傅里叶变换为()a X j Ω:上式表明将连续信号()a x t 采样后其频谱将变为周期的,周期为Ωs=2π/T 。
也即采样信号的频谱()a X j Ω是原连续信号xa(t)的频谱Xa(jΩ)在频率轴上以Ωs 为周期,周期延拓而成的。
因此,若对连续信号()a x t 进行采样,要保证采样频率fs ≥2fm ,fm 为信号的最高频率,才可能由采样信号无失真地恢复出原模拟信号ˆ()()()a a xt x t p t =1()()*()21()n a a a s X j X j P j X j jn T π∞=-∞Ω=ΩΩ=Ω-Ω∑()()n P t t nT δ∞=-∞=-∑计算机实现时,利用计算机计算上式并不方便,因此我们利用采样序列的傅里叶变换来实现,即而()()j j n n X e x n e ωω∞-=-∞=∑为采样序列的傅里叶变换2. 时域中,描述系统特性的方法是差分方程和单位脉冲响应,频域中可用系统函数描述系统特性。
已知输入信号,可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应。
数字信号处理课程实验报告实验一 离散时间信号和系统响应一. 实验目的1. 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解2. 掌握时域离散系统的时域特性3. 利用卷积方法观察分析系统的时域特性4. 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号及系统响应进行频域分析二、实验原理1. 采样是连续信号数字化处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性的变化以及信号信息不丢失的条件,而且可以加深对离散傅里叶变换、Z 变换和序列傅里叶变换之间关系式的理解。
对连续信号()a x t 以T 为采样间隔进行时域等间隔理想采样,形成采样信号: 式中()p t 为周期冲激脉冲,()a x t 为()a x t 的理想采样。
()a x t 的傅里叶变换为()a X j Ω:上式表明将连续信号()a x t 采样后其频谱将变为周期的,周期为Ωs=2π/T 。
也即采样信号的频谱()a X j Ω是原连续信号xa(t)的频谱Xa(jΩ)在频率轴上以Ωs 为周期,周期延拓而成的。
因此,若对连续信号()a x t 进行采样,要保证采样频率fs ≥2fm ,fm 为信号的最高频率,才可能由采样信号无失真地恢复出原模拟信号ˆ()()()a a xt x t p t =1()()*()21()n a a a s X j X j P j X j jn T π∞=-∞Ω=ΩΩ=Ω-Ω∑()()n P t t nT δ∞=-∞=-∑计算机实现时,利用计算机计算上式并不方便,因此我们利用采样序列的傅里叶变换来实现,即而()()j j n n X e x n e ωω∞-=-∞=∑为采样序列的傅里叶变换2. 时域中,描述系统特性的方法是差分方程和单位脉冲响应,频域中可用系统函数描述系统特性。
已知输入信号,可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应。
一、实验目的1、加深对离散信号的DFT的理解;2、在MATLAB中实现FFT算法。
二、实验原理N点序列的DFT和IDFT变换定义式如下:,,利用旋转因子具有周期性,可以得到快速算法(FFT)。
在MATLAB中,可以用函数和计算N点序列的DFT 正、反变换。
三、实验内容1、对连续的单一频率周期信号按采样频率采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。
实验代码:k=8;n1=[0:1:19];xa1=sin(2*pi*n1/k);subplot(2,2,1)plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=fft(xa1);xk1=abs(xk1);subplot(2,2,2)stem(n1,xk1)xlabel('k');ylabel('X(k)'); n2=[0:1:15]; xa2=sin(2*pi*n2/k); subplot(2,2,3) plot(n2,xa2)xlabel('t/T');ylabel('x(n)'); xk2=fft(xa2);xk2=abs(xk2); subplot(2,2,4) stem(n2,xk2)xlabel('k');ylabel('X(k)');实验结果:5101520-1-0.500.51t/Tx (n )05101520kX (k )51015-1-0.500.51t/Tx (n )kX (k )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 。
实验二DFT 和FFT1、实验目的认真复习周期序列DFS、有限长序列DFT 的概念、旋转因子的定义、以及DFS 和DFT的性质等有关内容;复习基2-FFT 的基本算法,混合基-FFT 的基本算法、Chirp-Z 变换的算法等快速傅立叶变换的方法。
掌握有限长序列的循环移位、循环卷积的方法,对序列共轭对称性的含义和相关内容加深理解和掌握,掌握利用DFT 分析序列的频谱特性的基本方法。
掌握FFT 算法的基本原理和方法、Chirp-Z 变换的基本原理和方法,掌握利用FFT 分析序列的频谱特性的方法。
熟悉利用MATLAB 进行序列的DFT、FFT 的分析方法。
2、实验内容a. 设周期序列( ) { x~(n) = …,0,1,2,3,0,1,2,3,0,1,2,3,….},求该序列的离散傅立叶级数X(k) = DFS[x~(n)],并画出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;xn=[0,1,2,3];k=0:1:3;N=4;Xk=dfs(xn,N);y=abs(Xk);stem(k,y);b . 设周期方波序列为 x(n)= ⎩⎨⎧+≤≤++≤≤)1-1)N (m n (01)-L mN n 1(mN L mN (m=0,,....2,1±±)其中 N 为基波周期,L/N 是占空比。
(1) 用L 和N 求| X (k ) |的表达式;(2) 当L 和N 分别为:L=5,N=20;L=5,N=40;L=5,N=60 以及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)]); stem(k,y);c . 设有限长序列x (n ) = {0,1,2,3},计算DTFT[x(n)]=X(e j ω),并画出它的幅度谱;然后 利用kw 1=42πk,k=0,1,2,3对X(e j ω)进行采样,并证明它等于实验a 中的X ~(k )。
《数字信号处理》实验二 预做实验报告DFT 频谱计算以及周期卷积代替线性卷积一、DFT 频谱计算给定N 点()x n ,其频谱计算公式:可以变成实现定义式,也可以利用Matlab 函数实现。
二、通过matlab 编程对的频谱计算一)思路:若求解连续函数()a x t 的频谱()a X j Ω,直接计算()()j t a a X j x t e dt+∞Ω-∞Ω=⋅⋅⎰无法在计算机内实现。
因此,采用DFT 的方法近似求解其频谱,过程如下:1)获取连续函数()a x t 的主干部分,即时间长度为T 的()a T x t ,欲求其频谱为()a T X j Ω。
2)设时域采用频率s f ,将其采样为N 点,即()a N x n ,这里sN T N t f =⋅∆=。
3)按照公式1()(), 0,1,.....,1N nkNn X k x n Wk N -===-∑,计算()X k ,实际上,由于频谱的对称性,只需计算前N/2个频谱值即可。
二)实现程序%DFT 分辨率实验 resolution experiment. %本实验两项内容% 一)利用DFT 的定义式,自己编程求解X(k) % 用到的Matlab 函数如下:% 1)以指数函数exp(t)为例;以fs 为抽样频率,可以离散化t ,获得离散指数序列x(n),设得到N 点x(n).%对应的连续信号长度为T=N*(1/fs),如果fs=常数,则增加点数N,意味着分析的连续信号长度T 增大,由分辨率Δf=1/T 知,导致DFT 分辨率提高,即%由|X(K)|勾勒出的频谱更接近无限长原始信号x(t)的真实谱。
当然,在其尾部补零,可以克服“栅栏效应”,起到细化频谱的作用。
但“增加T 提高分辨率”%与“N 点x(n)尾部补零细化频谱,克服栅栏效应”虽然都可以使频谱看起来更平滑,但两者有本质的区别。
“前者”是决定因素,“后者”是辅助手段,后者是在“ %前者”基础上的修补,不会起到本质的频谱提升。
实验证明如下。
%%%%%%%%%%%%初始化%%%%%%%%%1()(), 0,1,...,1N nkN n X k x n W k N -===-∑0010(N 1)0N N N0111(N 1)1N N N 0(N 1)1(N 1)(N 1)(N 1)NNN X(0)(0)w w ....w X(1)(1)w w ....w X Wx..................X(N 1)(1)w w ...w x x x N ⋅⋅-⋅⋅⋅-⋅⋅-⋅--⋅-⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎣⎦⎣⎦⎣⎦或clear;% 释放内存make all variables ocurred previously inavtive,and release memery.%pi=4*atan(1); % 释放以前变量占用的内存空间,使它们变为inactivefs=100; % 采样频率delta_t=1/fs; % sampling periodlength_x=480; % 采样点数input signal length,typically 10;12;60%% 采样连续信号,以获得length_x长的离散信号t=0:delta_t:((length_x-1)*delta_t);input_x=exp(-2*t); % 采样得到输入信号%figure(1);%% 显示采集到的时域信号subplot(1,3,1);% there are 3 figures in 1 map-window%一个图形窗中有三个图,当前为第一个图plot(input_x); %show x[]'s envelope in time domain 画图形的包络曲线title('Fig.1 输入信号时域波');%该图的标题grid on;x=input_x;L=length(input_x); % L是信号的长度L1=L/2; %%%%%%%%%%%% 做DFT运算,以求解|X(k)| %%%%%%%%%%% 方法一:利用矩阵计算X(k)% X=zeros(1,L1);% A=dftmtx(L); % A is a matrix of Wn %得到N*N的W矩阵% X=x*A; % X=DFT(x)% 方法二:利用DFT的定义式,编写“循环计算”程序,求解X(k)X=zeros(1,L1);%由于前后N/2点|X|对称,只计算前一半for i=0:(L1-1) %计算前N/2个X(k)for n=0:(L-1)X(i+1)=X(i+1)+input_x(n+1)*exp(j*2*pi*n*i/L);endend%%% 显示离散频谱X(K),由于[0,pi]与[pi,2pi]间的N/2个模值是关于pi点对称的,可以只计算前N/2个X(K)magX=delta_t*abs(X(1:1:L1));%DFT计算得到的频谱乘以“采样时间间隔”这一系数,才与连续信号频谱相等;参考教材Pk=(0:1:(L1-1)); % 这里k是MA TLAB中画图时的横轴中间变量,w=2*pi/length_x*k; % w是MA TLAB中画图时的频率横轴,与[pi,2pi]的N/2个模值是关于pi点对称的。
subplot(1,3,2);plot(w/pi,magX); %w/pi是MATLAB中画图时的归一化频率横轴,纵轴为幅度的绝对值title('Fig.2 离散频谱X(K)的包络');grid on;subplot(1,3,3);stem(w/pi,magX); %画离散的x(k)title('Fig.3 离散频谱X(K)');%%%%%%%%% 计算并显示输入信号input_x(i)的DTFT,以便于比较与X(K)的关系 %%%% figure(4);freqz(input_x);%freqz(input_x)=DTFT[x()]%求DTFT (x ),是离散信号的连续频谱 title('Fig.4 input_x 的DTFT(x[n])'); %show x[] in frequence domain%%%%%%%% 自己编程实现“尾部补零计算高密度谱,并用图展示幅度谱结果”%%%%%%%%% 三)实验数据01002003004005000.10.20.30.40.50.60.70.80.91Fig.1 输入信号时域波00.20.40.60.810.10.20.30.40.50.60.7Fig.2 离散频谱X (K)的包络00.20.40.60.810.10.20.30.40.50.60.7Fig.3 离散频谱X (K)四)结论当N=480时,可以获得指数函数的频谱;当补零可以获得高密度谱;N 增加,可提高频谱分辨率。
三、通过matlab 编程对周期卷积代替线性卷积可行性验证%%%%%%%%%%%%初始化%%%%%%%%%clear;% 释放以前变量占用的内存空间,使它们变为inactive %%%%%%初始化线性卷积的两个有限长序列 x1=rand(1,10); x2=rand(1,10);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算其线性卷积,并画图 x3=conv(x1,x2);%%%%%将三者的时域图画出subplot(1,4,1);%一个图形窗中有三个图,当前为第一个图 stem(x1); %show x[] in time domain ,画图形的包络曲线 title('Fig.1 时域信号x1 '); grid on;subplot(1,4,2);%一个图形窗中有三个图,当前为第一个图 stem(x2); %show x[] in time domain ,画图形的包络曲线 title('Fig.2 时域信号x2 ');grid on;subplot(1,4,3);%一个图形窗中有三个图,当前为第一个图 stem(x3); %show x[] in time domain ,画图形的包络曲线 title('Fig.3 线性卷积结果x3'); grid on;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算其周期卷积平画图 %%% 周期延拓 N_paddingzeros=10;x1_periodical=[x1 zeros(1,N_paddingzeros)]; x2_periodical=[x2 zeros(1,N_paddingzeros)];%%%%%%%%%%% 做DFT 运算 %%%%%%%%%% L=length(x1_periodical);A=dftmtx(L);%得到N*N 的W 矩阵 X1=x1_periodical*A;%得到X1(K ) X2=x2_periodical*A;%得到X2(K )X3=X1.*X2; % 运算符 .*表示“两个程度为N 的序列相乘,得到另一个长度为N 的序列” %% 求解X3的逆变换,这时核矩阵为 CONJ(DFTMTX(L))/L. conjugate 共轭,vt 或adj A_inverse=conj(A)/L;x3_periodical=X3*A_inverse; subplot(1,4,4);x3_periodical_real=real(x3_periodical); stem(real(x3_periodical_real)); title('周期卷积结果'); grid on;02468100.10.20.30.40.50.60.70.80.91Fig.1 时域信号x102468100.10.20.30.40.50.60.70.80.91Fig.2 时域信号x2051015200.511.522.53Fig.3 线性卷积结果x305101520-0.50.511.522.53周期卷积结果。