实验三 连续信号的频域分析
一、实验目的
1.掌握周期信号的频谱—— Fourier 级数的分析方法及其物理意义。
2.深入理解信号频谱的概念,掌握典型信号的频谱以及 Fourier 变换的主要性质。
二、实验原理及方法
1.周期信号的三角形式的傅里叶级数
Fourier 级数的理论告诉我们:任何周期信号只要满足Dirichlet条件就可以分解成许多指数分量之和(指数 Fourier 级数)或直流分量及许多正弦、余弦分量之和,即
(3.1)
2. 周期信号的指数形式的傅里叶级数
(3.6)
式(3.6)表明:任意周期信号可分解为无穷多项不同频率的复指数之加权和,其各分量的复数幅度或相量(或称为复加权系数)为。
(3.7)
计算机不能计算无穷多个系数,假设需要计算的谐波次数为N,则总的系数个数为2N+1个。在确定了时间范围和时间变化的步长即T和dt之后,对某一个系数,式(3.7)可以近似为:
(3.8)
对于全部的2N+1个系数,上面的计算可以按照矩阵运算实现。
例题:
Matlab实现系数计算的程序如下:
dt=0.01;
T=2;t=-T/2:dt:T/2;omega0=2*pi/T;
f1=input(‘put in the periodic signal f(t) over one period f1(t)=’);
N=input(‘put in the number N=’);
for n=-N:N
F (N+1+n)=f1*exp(-j*n*omega0*t’)*dt/T; %计算全部2N+1个系数
end
其中,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度影响非常大,dt越小,精度越高,但计算机计算所花的时间越长。
原信号可以用有限项谐波成分来近似合成,即
(3.9)
例题:
Matlab实现信号合成的程序如下:
f=0;
L=2*N+1;
for n=1:L-1;
f=f+F(n)*exp(j*(n-1-N)*omega0*t); %信号合成
end
周期信号频谱求解另一种方法:先由定义求出信号频谱的数学表达式,再用matlab做出频
谱图。函数abs()求幅度,angle()求相位。
3.非周期信号的傅里叶变换
(3.10)
Matlab实现傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值计算。
(1)利用符号运算的方法实现。MATLAB的Symbolic Math Toolbox 提供了能直接求解傅里叶变换与反变换的函数fourier( ) 及 ifourier( )。调用格式如下:
F=fourier(f):它是符号函数f 的傅里叶变换,默认返回函数F是关于的函数;
F=fourier(f,v):它的返回函数F是关于符号对象v的函数,即;
F=fourier(f,u,v): 它是对关于u的函数f进行变换,而返回函数F是v的函数,即
f=ifourier(F): 它是函数F 的傅里叶反变换,默认的独立变量为,默认返回是关于x的函数。如果F=F(x),则ifourier(F)返回关于t的函数
f=ifourier(F,u): 它的返回函数f是u的函数,而不是默认的x的函数。
f=ifourier(f,v,u): 它是对关于v的函数F进行变换,而返回关于u的函数f;
这里要注意的是,在调用上述两个函数之前,先要用syms命令对所用到的变量(如t、u、v、)等进行定义,将这些变量定义为符号变量。对于fourier( )中的函数f或ifourier( )中的F,也要用syms将f或F定义为符号表达式。另外,在采用fourier( )及ifourier( )得到的返回函数,仍然是符号表达式。若需要对返回函数作图时,只能用ezplot( )绘图命令,而不能用plot( )命令。如果返回函数中含有等项,用ezplot()也无法作图。
fourier()函数的局限性:用fourier()对某些信号求反变换时,其返回函数可能会包含一些不能直接表达的式子,甚至可能会出现一些屏幕提示为“未被定义的函数或变量”的项;另外,在许多情况下,信号尽管是连续的,但却不可能表示成符号表达式;函数fourier()也不可能对离散信号进行处理。
(2)用数字计算的方法实现。
用数值计算的方法计算连续时间信号的傅里叶变换需要信号是时限信号,也就是当时间|t|大于某个给定时间时其值衰减为零或接近于零,计算机只能处理有限大小和有限数量的数。采用数值计算算法的理论依据是:
(3.11)
若信号为时限信号,当时间间隔T取得足够小时,上式可演变为:
(3.12)
上式用Matlab表示为:
F=f*exp(j*t’*w)*T
其中F为信号的傅里叶变换,w为频率,T为时间步长。
相应的Matlab程序:
T = 0.01; dw = 0.1; %时间和频率变化的步长
t = -10:T:10;
w = -4*pi:dw:4*pi;
F=f*exp(-j*t’*undefined)*T; %傅里叶变换
F1=abs(F); %计算幅度谱
phaF=angle(F); %计算相位谱
这里还需要注意,由于在Matlab运算中,必须对连续信号进行采样,为了不丢失原信号的信息,即反变换后能不失真地恢复原来信号,采样间隔的确定必须满足采样定理的要求,即必须小于奈奎斯特频率。
类似地,傅里叶反变换的Matlab实现如下:
t = -5:0.01;5; % 指定信号的时间范围,此范围应根据信号的持续时间确定。
dw = 0.1; matlab傅里叶变换的幅度谱和相位谱w = -4*pi:dundefined:4*pi;
F = input(‘Type in the expression of F(jw)’);
f = F* exp(j*w’*t)*dw;
例如,门信号(单个矩形脉冲)的时域波形和频谱如图3-4,容易看出,它们在形状上与相应的周期信号频谱包络线相同。
图3-4 非周期信号的波形图和频谱图
三、实验内容及步骤
1)求不同占空比下周期矩形脉冲的幅度谱和相位谱,例如、。
2) 求图3-6所示的单个三角脉冲()的傅里叶变换,并作出其幅度谱和相位谱。
图3-6 单个三角脉冲
四、实验报告要求
1.编程实现实验内容,要求附上源程序。
2.总结实验中的主要结论,你的收获和体会。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论