信号与系统上机实验连续时间系统的频域分析.docx
- 文档编号:10367647
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:33
- 大小:381.63KB
信号与系统上机实验连续时间系统的频域分析.docx
《信号与系统上机实验连续时间系统的频域分析.docx》由会员分享,可在线阅读,更多相关《信号与系统上机实验连续时间系统的频域分析.docx(33页珍藏版)》请在冰豆网上搜索。
信号与系统上机实验连续时间系统的频域分析
连续时间信号及系统的频域分析
一、实验目的
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、掌握连续时间傅里叶变换的分析方法及其物理意义;
3、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质;
4、掌握系统频率响应特性的概念及其物理意义;
5、掌握系统频率响应特性的计算方法和特性曲线的绘制方法,理解具有不同频率响应特性的滤波器对信号的滤波作用;
6、学习和掌握幅度特性、相位特性的物理意义;
7、学习掌握利用MATLAB语言编写计算CTFS、CTFT和DTFT的仿真程序,并能利用这些程序对一些典型信号进行频谱分析,验证CTFT、DTFT的若干重要性质。
8、掌握用MATLAB语言进行系统频响特性分析的方法。
基本要求:
掌握并深刻理傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用MATLAB编程完成相关的傅里叶变换的计算;掌握LTI连续和离散时间系统的频域数学模型和频域数学模型的MATLAB描述方法,深刻理LTI系统的频率响应特性的物理意义,理解滤波和滤波器的概念,掌握利用MATLAB计算和绘制LTI系统频率响应特性曲线中的编程。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS分析
任何一个周期为T1的正弦周期信号,只要满足狄利克利条件,就可以展开成傅里叶级数。
其中三角傅里叶级数为:
或:
其中
,称为信号的基本频率(Fundamentalfrequency),
分别是信号
的直流分量、余弦分量幅度和正弦分量幅度,
为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率
的函数,绘制出它们与
之间的图像,称为信号的频谱图(简称“频谱”),
-
图像为幅度谱,
-
图像为相位谱。
三角形式傅里叶级数表明,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同频率的互为谐波关系(harmonicallyrelated)的正弦信号所组成,其中每一个不同频率的正弦信号称为正弦谐波分量(Sinusoidcomponent),其幅度(amplitude)为
。
也可以反过来理解三角傅里叶级数:
用无限多个正弦谐波分量可以合成一个任意的非正弦周期信号。
指数形式的傅里叶级数为:
其中,
为指数形式的傅里叶级数的系数,按如下公式计算:
指数形式的傅里叶级数告诉我们,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同频率的互为谐波关系(harmonicallyrelated)的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度(complexamplitude)为
。
这里“复幅度(complexamplitude)”指的是
通常是复数。
上面的傅里叶级数的合成式说明,我们可以用无穷多个不同频率的周期复指数信号来合成任意一个周期信号。
然而,用计算机(或任何其它设备)合成一个周期信号,显然不可能做到用无限多个谐波来合成,只能取这些有限个谐波分量来近似合成。
假设谐波项数为N,则上面的和成式为:
显然,N越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。
本实验可以比较直观地了解傅里叶级数的物理意义,并观察到级数中各频率分量对波形的影响包括“Gibbs”现象:
即信号在不连续点附近存在一个幅度大约为9%的过冲,且所选谐波次数越多,过冲点越向不连续点靠近。
这一现象在观察周期矩形波信号和周期锯齿波信号时可以看得很清楚。
2、连续时间信号傅里叶变换----CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。
傅里叶变换和其逆变换定义如下:
连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。
按照教材中的说法,任意非周期信号,如果满足狄里克利条件,那么,它可以被看作是由无穷多个不同频率(这些频率都是非常的接近)的周期复指数信号ejωt的线性组合构成的,每个频率所对应的周期复指数信号ejωt称为频率分量(frequencycomponent),其相对幅度为对应频率的|X(jω)|之值,其相位为对应频率的X(jω)的相位。
X(jω)通常为关于的复函数,可以按照复数的极坐标表示方法表示为:
X(jω)=|X(jω)|ej∠X(jω)
其中,|X(jω)|称为x(t)的幅度谱,而∠X(jω)则称为x(t)的相位谱。
给定一个连续时间非周期信号x(t),它的频谱也是连续且非周期的。
对于连续时间周期信号,也可以用傅里变换来表示其频谱,其特点是,连续时间周期信号的傅里叶变换时有冲激序列构成的,是离散的——这是连续时间周期信号的傅里叶变换的基本特征。
3、离散时间序列的傅里叶变换---DTFT
给定一个非周期离散时间序列x[n],它的傅里叶变换定义为
其反变换定义为
式称为离散时间傅里叶正变换,式称为离散时间傅里叶反变换。
由式可以看出,一个非周期离散时间序列,总是可以被看作是由无穷多个不同频率的加权的基本频率分量ejωn组合而成的。
对序列中的频率为ω的频率分量来说,其权为X(ejω),通常是复数,也可以将它表示为
X(ejω)=|X(ejω)|ej∠X(ejω)
|X(ejω)|称为序列的幅度谱,而∠X(ejω)称为序列的相位谱,它们都是频率ω的周期函数。
4、连续周期信号的傅里叶级数CTFS的MATLAB实现
傅里叶级数的MATLAB计算
设周期信号x(t)的基本周期为T1,且满足狄里克利条件,则其傅里叶级数的系数可由式计算得到。
式重写如下:
基本频率为:
对周期信号进行分析时,我们往往只需对其在一个周期内进行分析即可,通常选择主周期(Principleperiod)。
假定x1(t)是x(t)中的主周期,则
计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N,则总的系数个数为2N+1个。
在确定了时间范围和时间变化的步长即T1和dt之后,对某一个系数,上述系数的积分公式可以近似为:
对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。
MATLAB实现系数计算的程序如下:
dt=;
T=2;t=-T/2:
dt:
T/2;w0=2*pi/T;
x1=input(‘Typeintheperiodicsignalx(t)overoneperiodx1(t)=’);
N=input(‘TypeinthenumberN=’);
k=-N:
N;L=2*N+1;
ak=x1*exp(-j*k*w0*t’)*dt/T;
需要强调的是,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度的影响非常大,dt越小,精度越高,但是,计算机计算所花的时间越长。
例题2-1:
给定一个周期为T1=2s的连续时间周期方波信号,如图所示,其一个周期内的数学表达式为:
解:
首先,我们根据前面所给出的公式,计算该信号的傅里叶级数的系数。
因为:
ω0=2π/T1=π,代入上式得到:
在MATLAB命令窗口,依次键入:
>>k=-10:
10;
>>ak=((-j).^k).*(sin((k+eps)*pi/2)./((k+eps)*pi))%Theexpressionofak
ak=
Columns1through4
0+0+
Columns5through8
0+0+
Columns9through12
0+0-
Columns13through16
0-0-
Columns17through20
0-0-
Column21
从MATLAB命令窗口,我们得到了该周期信号从
到
共21个系数。
紧接着再键入以下命令:
>>subplot(221)
>>stem(k,abs(ak),'k.')
>>title('TheFourierseriescoefficients')
>>xlabel('Frequencyindexk')
就得到一幅如右图所示的描述
与k之间的关系的图形。
以上是我们通过手工计算得到的这个周期信号的傅里叶级数表达式及其频谱图,下面给出完成傅里叶级数系数计算的相应MATLAB范例程序。
%Program2_1
%ThisprogramisusedtoevaluatetheFourierseriescoefficientsakofaperiodicsquarewave
clear,closeall
T=2;dt=;t=-2:
dt:
2;
x1=u(t)-u(t-1-dt);x=0;
form=-1:
1%Periodicallyextendx1(t)toformaperiodicsignal
x=x+u(t-m*T)-u(t-1-m*T-dt);
end
w0=2*pi/T;
N=10;%Thenumberoftheharmoniccomponents
L=2*N+1;
fork=-N:
N;%EvaluatetheFourierseriescoefficientsak
ak(N+1+k)=(1/T)*x1*exp(-j*k*w0*t')*dt;
end
phi=anglel(ak);%Evaluatethephaseofak
执行程序Program2_1后,就完成了信号的傅里叶级数的系数的计算,在命令窗口键入
>>ak
命令窗口就可以显示傅里叶级数的21个系数:
ak=
Columns1through4
++-+
Columns5through8
-+-+
Columns9through12
-+-
Columns13through16
+-+-
Columns17through20
+-+-
Column21
-
将这里的ak之值同前面手工计算得到的ak比较,可见两者是完全相同的。
再次特别提示:
程序中,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度的影响非常大,dt越小,精度越高,本程序中的dt之所以选择就是为了提高计算精度。
但是,计算机所花的计算时间越长。
在程序Program2_1中添加相应的计算|ak|和绘图语句,就可以绘制出信号的幅度谱和相位谱的谱线图。
周期信号的合成以及Gibbs现象
从傅里叶级数的合成式(Synthesisequation)
可以看出,用无穷多个不同频率和不同振幅的周期复指数信号可以合成一个周期信号。
然而,我们无法用计算机实现对无穷多个周期复指数信号的合成。
但是,用有限项来合成却是可行的,在实际应用中,多半也就是这么做的。
然而,这样做的一个必然结果,就是引入了误差。
如果一个周期信号在一个周期有内断点存在,那么,引入的误差将除了产生纹波之外,还将在断点处产生幅度大约为9%的过冲(Overshot),这种现象被称为吉伯斯现象(Gibbsphenomenon)。
为了能够观察到合成信号与原信号的不同以及Gibbs现象,我们可以利用前面已经计算出的傅里叶级数的系数,计算出截短的傅里叶级数:
这个计算可用L=2N+1次循环来完成:
其中r作为循环次数,x2在循环之前应先清零。
完成这一计算的MATLAB程序为:
x2=0;L=2*N+1;
forr=1:
L;
x2=x2+ak(r)*exp(j*(r-1-N)*w0*t);
end;
完成了所有的计算之后,就可以用绘图函数:
plot()和stem()将计算结果包括x1,x2,abs(ak)和angle(ak)以图形的形式给出,便于我们观察。
观察吉伯斯现象的最好的周期信号就是图2-1所示的周期方波信号,这种信号在一个周期内有两个断点,用有限项级数合成这个信号时,吉伯斯现象的特征非常明显,便于观察。
例题2-2:
修改程序Program2_1,使之能够用有限项级数合成例题2-1所给的周期方波信号,并绘制出原始周期信号、合成的周期信号、信号的幅度谱和相位谱。
为此,只要将前述的for循环程序段和绘图程序段添加到程序Program2_1中即可,范例程序如下:
%Program2_2
%ThisprogramisusedtocomputetheFourierseriescoefficientsakofaperiodicsquarewave
clear,closeall
T=2;dt=;t=-2:
dt:
2;
x1=u(t)-u(t-1-dt);x=0;
form=-1:
1
x=x+u(t-m*T)-u(t-1-m*T-dt);%Periodicallyextendx1(t)toformaperiodicsignal
end
w0=2*pi/T;
N=input('TypeinthenumberoftheharmoniccomponentsN=:
');
L=2*N+1;
fork=-N:
1:
N;
ak(N+1+k)=(1/T)*x1*exp(-j*k*w0*t')*dt;
end
phi=angle(ak);
y=0;
forq=1:
L;%Synthesiztheperiodicsignaly(t)fromthefiniteFourierseries
y=y+ak(q)*exp(j*(-(L-1)/2+q-1)*2*pi*t/T);
end;
subplot(221),
plot(t,x),title('Theoriginalsignalx(t)'),axis([-2,2,,]),
subplot(223),
plot(t,y),title('Thesynthesissignaly(t)'),axis([-2,2,,]),xlabel('Timet'),
subplot(222)
k=-N:
N;stem(k,abs(ak),'k.'),title('Theamplitude|ak|ofx(t)'),axis([-N,N,,])
subplot(224)
stem(k,phi,'r.'),title('Thephasephi(k)ofx(t)'),axis([-N,N,-2,2]),xlabel('Indexk')
在用这个程序观察吉伯斯现象时,可以反复执行该程序,每次执行时,输入不同之N值,比较所的图形的区别,由此可以观察到吉伯斯现象的特征。
5用MATLAB实现CTFT及其逆变换的计算
用MATLAB实现CTFT的计算
MATLAB进行傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值计算,本实验要求采用数值计算的方法来进行傅里叶变换的计算。
严格来说,用数值计算的方法计算连续时间信号的傅里叶变换需要有个限定条件,即信号是时限信号(Timelimitedsignal),也就是当时间|t|大于某个给定时间时其值衰减为零或接近于零,这个条件与前面提到的为什么不能用无限多个谐波分量来合成周期信号的道理是一样的。
计算机只能处理有限大小和有限数量的数。
采用数值计算算法的理论依据是:
若信号为时限信号,当时间间隔T取得足够小时,上式可演变为:
上式用MATLAB表示为:
X=x*exp(j*t’*w)*T
其中X为信号x(t)的傅里叶变换,w为频率Ω,T为时间步长。
相应的MATLAB程序:
T=;dw=;%时间和频率变化的步长
t=-10:
T:
10;
w=-4*pi:
dw:
4*pi;
X(jω)可以按照下面的矩阵运算来进行:
X=x*exp(-j*t’*ω)*T;%傅里叶变换
X1=abs(X);%计算幅度谱
phai=angle(X);%计算相位谱
为了使计算结果能够直观地表现出来,还需要用绘图函数将时间信号x(t),信号的幅度谱|X(jω)|和相位谱∠X(jω)分别以图形的方式表现出来,并对图形加以适当的标注。
在Matlab中有FFT函数可以直接计算傅里叶变换,该函数使用了快速傅里叶变换算法(参考数字信号处理课程)。
但该函数计算结果将负频率部分平移到了正频率结果的后面,因此需要使用FFTSHIFT函数将负频率谱数据移到它原来该处的位置。
请看下面的演示示例。
例:
sin(2*pi*1*t)函数的频谱。
(这里为了清楚展示频谱平移的情况,采用了离散谱的画法)
程序:
f=1;
fs=4*f;
t=0:
1/fs:
1;
x=sin(2*pi*t*f);%注意x的长度是5
y=fft(x)
figure
(1)
subplot(311)
stem(abs(y));
z=fftshift(y);
subplot(312)
stem(abs(z));
faxis=linspace(-fs/2,fs/2,length(z));
subplot(313)
stem(faxis,abs(z));
结果图形:
第三幅图加上了频率坐标,请注意频率坐标向量的产生方法。
用MATLAB实现傅里叶逆变换
连续时间傅里叶逆变换可用式进行计算。
式重写如下:
从定义式可看出,其计算方法与傅里叶变换是一样的,因此可以采用同样的矩阵运算的方法来计算,即
x(t)=X(jω)*exp(jω’*t)*dω
具体的MATLAB函数如下:
t=-5:
;5;%指定信号的时间范围,此范围应根据信号的持续时间确定。
dw=;w=-4*pi:
dω:
4*pi;
X=input(‘TypeintheexpressionofX(jw)’);
x=X*exp(jw’*t)*dw;
然后用绘图函数就可以绘制出逆变换得到的时域信号波形图。
同样,在Matlab中也有IFFT函数用来求逆傅里叶变换,此函数一般用来对FFT函数计算出的傅里叶变换向量做逆变换,无需使用fftshift。
例:
计算sin(2*pi*10t)的频谱,并做逆变换。
f=10;
fs=100*f;
t=0:
1/fs:
1;
x=sin(2*pi*t*f);%×¢Ò⣺xµÄ³¤¶ÈÊÇ5
y=fft(x)
figure
(1)
subplot(311)
plot(t,x);
z=fftshift(y);
iy=real(ifft(y));
faxis=linspace(-fs/2,fs/2,length(z));
subplot(312)
stem(faxis,abs(z));
axis([-40400max(abs(z))])
subplot(313)
plot(t,iy);
6连续时间LTI系统的频率响应
所谓频率特性,也称为频率响应特性,简称频率响应(Frequencyresponse),是指系统在正弦信号激励下的稳态响应随频率变化的情况,包括响应的幅度随频率的变化情况和响应的相位随频率的变化情况两个方面。
连续时间LTI系统的时域及频域分析图
上图中x(t)、y(t)分别为系统的时域激励信号和响应信号,h(t)是系统的单位冲激响应,它们三者之间的关系为:
,由傅里叶变换的时域卷积定理可得到:
或者:
为系统的频域数学模型,它实际上就是系统的单位冲激响应h(t)的傅里叶变换。
即
由于H(jω)实际上是系统单位冲激响应h(t)的傅里叶变换,如果h(t)是收敛的,或者说是绝对可积(Absolutlyintegrabel)的话,那么H(jω)一定存在,而且H(jω)通常是复数,因此,也可以表示成复数的不同表达形式。
在研究系统的频率响应时,更多的是把它表示成极坐标形式:
上式中,
称为幅度频率相应(Magnituderesponse),反映信号经过系统之后,信号各频率分量的幅度发生变化的情况,
称为相位特性(Phaseresponse),反映信号经过系统后,信号各频率分量在相位上发生变换的情况。
和
都是频率ω的函数。
对于一个系统,其频率响应为H(jω),其幅度响应和相位响应分别为
和
,如果作用于系统的信号为
,则其响应信号为
若输入信号为正弦信号,即x(t)=sin(ω0t),则系统响应为
可见,系统对某一频率分量的影响表现为两个方面,一是信号的幅度要被
加权,二是信号的相位要被
移相。
由于
和
都是频率ω的函数,所以,系统对不同频率的频率分量造成的幅度和相位上的影响是不同的。
7用MATLAB计算系统频率响应
在本实验中,表示系统的方法仍然是用系统函数分子和分母多项式系数行向量来表示。
实验中用到的MATLAB函数如下:
[H,w]=freqs(b,a):
b,a分别为连续时间LTI系统的微分方程右边的和左边的系数向量(Coefficientsvector),返回的频率响应在各频率点的样点值(复数)存放在H中,系统默认的样点数目为200点;
Hm=abs(H):
求模数,即进行
运算,求得系统的幅度频率响应,返回值存于Hm之中。
real(H):
求H的实部;
imag(H):
求H的虚部;
phi=atan(-imag(H)./(real(H)+eps)):
求相位频率相应特性,atan()用来计算反正切值;或者
phi=angle(H):
求相位频率相应特性;
tao=grpdelay(num,den,w):
计算系统的相位频率响应所对应的群延时。
计算频率响应的函数freqs()的另一种形式是:
H=freqs(b,a,w):
在指定的频率范围内计算系统的频率响应特性。
在使用这种形式的freqs/freqz函数时,要在前面先指定频率变量w的范围。
例如在语句H=freqs(b,a,w)之前加上语句:
w=0:
2*pi/256:
2*pi。
下面举例说明如何利用上述函数计算并绘制系统频率响应特性曲线的编程方法。
假设给定一个连续时间LTI系统,下面的微分方程描述其输入输出之间的关系
编写的MATLAB范例程序,绘制系统的幅度响应特性、相位响应特性、频率响应的实部和频率响应的虚部。
程序如下:
%Program2_3
%ThisProgramisusedtocomputeanddrawtheplotsofthefrequencyresponse
%ofacontinuous-timesystem
b=[1];%Thecoefficientvectoroftherightsideofthedifferentialequation
a=[132];%Thec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 上机 实验 连续 时间 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)