基于MATLAB仿真的连续信号频谱分析.doc.doc
实验十:基于MATLAB仿真的连续信号频谱分析
一、实验目的
1、学会运用MATLAB求连续时间信号的傅里叶变换;
2、学会运用MATLAB求连续时间信号的频谱图。
二、实验原理
1、周期信号的分解
根据傅里叶级数的原理,任何周期信号都可以表示为三角级数的组合称为f(t)的傅
合成波形所包含的谐波分量越多,除间断点附近外,它越接近于原波形,在间断点附近,即使合成的波形所含谐波次数足够多,也仍存在约9%的偏【示例1】用正弦信号的叠加近似合成一个频率为50Hz,幅度为3的MATLAB程序如下:
clear all;
fs=5000;
t=0:1/fs:0.1;
f0=50;sum=0;
subplot(211)
for n=1:2:9
plot(t,4/pi*1/n*sin(2*pi*n*f0*t),'k');
hold on;
end
title('信号叠加前');
subplot(212)
for n=1:2:9;
sum=sum+4/pi*1/n*sin(2*pi*n*f0*t);
end
plot(t,sum,'k')
10.1所示。
2、非周期信号的频谱分析
信号的傅里叶变换定义为
(.1)
傅里叶反变换定义为
(.2)
信号的傅里叶变换主要包括MATLAB符号运算和MATLAB数值分析两种方法。
(1) MATLAB符号运算求解法
MATLAB符号数学工具箱提供了直接求解傅里叶变换和傅里叶反变换的函数fourier( )及ifourier( )。傅里叶变换的语句格式分为三种。
F=fourier(f );表示符号函数f的Fourier变换,默认返回是关于的函数。
F=fourier(f ,v);表示返回函数F是关于符号对象v的函数,而不是默认的,即。
F=fourier(f ,u,v); 是对关于u的函数f进行变换,返回函数F是关于v的函数,即。
类似的,傅里叶反变换的语句格式也分为三种。
要注意的是,函数fourier( )及ifoureir( )都是接收由sym函数所定义的符号变量或者符号表达式。【2】用MATLAB符号运算求解法求单边指数信号的傅里叶变换。
解:MATLAB源程序为
>> ft=sym('exp(-2*t)*Heaviside(t)');
>> Fw=fourier(ft)
运行结果为
Fw =
1/(2+i*w)
(2) 连续时间信号的频谱图
信号f(t)的傅里叶变换表达了信号在处的频谱密度分布情况,这就是信号的傅里叶变换的物理意义。一般是复函数,可以表示为。我们把与曲线分别称为非周期信号的幅度频谱和相位频谱。
【3】用MATLAB命令绘制单边指数信号幅度谱和相位谱。
解:MATLAB源程序为
ft=sym('exp(-2*t)*Heaviside(t)');
Fw=fourier(ft);
subplot(211)
ezplot(abs(Fw),[-2*pi,2*pi]),grid on
title('幅度谱')
phase=atan(imag(Fw)/real(Fw));
subplot(212)
ezplot(phase,[-2*pi,2*pi]),grid on
title('相位谱')
程序运行结果如图.2所示。
(3)MATLAB数值计算求解法
Fourier( )和ifourier( )函数的一个局限性是,如果返回函数中有诸如狄拉克函数等项,则用ezplot( )函数无法作图。对某些信号求变换时,其返回函数可能包含一些不能直接用符号表达的式子,甚至可能出现提示“未被定义的函数或变量”,因而也不能对其返回函数作图。此外,在很多实际情况中,尽管信号是连续的,但经过抽样所获得的信号则是离散的数值量,因此无法表示成符号表达式,此时不能应用Fourier( )函数对进行处理,而只能用数值计算法来近似求解。下面介绍傅里叶变换的数值计算法。
从傅里叶变换定义出发,有
(3)
当足够小时,上式的近似情况可以满足实际需要。对于时限信号,或者在所研究的时间范围内衰减到足够小,上式可研究有限n的取值。假设是因果信号,则有
(4)
对(4)式的角频率进行离散化,假设离散化后得到N个样值,即
, (5)
因此有
采用行向量,用矩阵表示为
(6)
式(6)提供了用MATLAB实