天天看点

方波和频谱仿真matlab,基于MATLAB仿真的连续信号频谱分析.doc.doc

基于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实