x1(n)?{1,2,1,1}-2?n?2,x2(n)?1其他,x2(n)?0x1=[1 2 1 1]; >> x2=ones(1,5); >> x3=conv(x1,x2); >> n3=-3:4;
>> stem(n3,x3,'filled'); 波形如下:
MATLAB 程序如下:
(6)已知某LTI离散系统,其单位抽样响应h(n)?sin(0.5n),n?0,系统的输入为
x(n)?sin(0.2n),n?0,计算当n=0,1,2,…,40时系统的零状态响应y(n),绘出
x(n),h(n)和y(n)时域波形。 MATLAB 程序如下: n=0:40; h=sin(0.5.*n); >> x=sin(0.2.*n); >> y1=conv(x,h); y=y1(:,1:41); >> subplot(311); >> stem(n,x,'filled');
>> subplot(312); >> stem(n,h,'filled'); >> subplot(313); >> stem(n,y,'filled'); 波形如下:
7)已知两个连续时间信号,求两个信号的卷积。 MATLAB 程序如下:
function [x,t]=sconv( x1,x2,t1,t2,dt ) x=conv(x1,x2); x=x*dt;
t0=t1(1)+t2(1);
l=length(x1)+length(x2)-2; t=t0:dt:(t0+l*dt); end dt=0.001; >> t1=-1:dt:1;
>> x1=2*((t1+1>=0)-(t1-1>=0)); >> t2=-2:dt:2;
>> x2=(t2+2>=0)-(t2-2>=0); >> [x,t]=sconv(x1,x2,t1,t2,dt); >> plot(t,x); 波形如下:
四、实验心得体会
经过这次实验后,对MATLAB对系统进行时域分析的方法有了初步的了解,并且加深了对卷积积分和卷积和的理解。不过对于程序的使用熟练程度仍有欠缺,需要在下次实验中继续提高。
实验3 信号频域分析 一、实验目的
1.深入理解信号频谱的概念,掌握信号的频域分析方法。 2.观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理与方法
1.连续周期信号的频谱分析
如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数形式,即
x(t)??ckejkw0t...............(1)
k?????1ck??T0x(t)e?jkw0tdt........(2)T0
式中,T0表示基波周期,w0?2?/T0为基波频率,?T0(?)表示任一个基波周期内的积分。
式(1)和式(2)定义为周期信号复指数形式的傅里叶级数,系数ck称为x(t)的傅里叶系数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即
x(t)?a0??akcoskw0t??bksinkw0t...........(3)k?1k?1???? 其中a0?122?T0x(t)dt,ak??T0x(t)coskw0tdt,bk??T0x(t)sinkw0tdt......(4)T0T0T0
式(3)中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶
级数,即
x(t)?A0??Akcos(kw0t??k)...........(5)k?1?? 其中2A0?a0,Ak?ak?bk2,?k??arctan
bk............(6)ak可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。一般来说周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。
2.连续非周期信号的频谱分析
对于非周期连续时间信号,吸纳后的傅里叶变换和傅里叶逆变换定义为
X(w)??x(t)e?jwtdt............(7)???? x(t)?12??????X(w)ejwtdw........(8)
式(7)和式(8)把信号的时域特性和频域特性联系起来,确立了非周期信号x(t)和频谱X(w)之间的关系。
采用MATLAB可以方便地求取非周期连续时间信号的傅里叶变换,这里我们介绍常用的集中方法。
1)符号运算法
MATLAB的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier函数和ifourier函数,基本调用格式为
X=fourier(x) X=ifourier(X) 默认的时域变量为t,频域变量为w。 2)数值积分法
除了采用符号运算的方法外,我们还可以利用MATLAB的quad函数,采用数值积分的方法来进行连续信号的频谱分析,quad函数是一个用来计算数值积分的函数。利用quad函数可以计算非周期连续时间信号的频谱。Quad函数的一般调用格式为:
y=quad(fun,a,b)
y=quad(fun,a,b,TOL,TRACE,p1,p2,…) 其中fun指定被积函数,可以采用inline命令来创建,也可以通过传递函数句柄的形式来指定,a、b表示定积分的下限和上限,TOL表示允许的相对或绝对积分误差,TRACE表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL和TRACE
为空矩阵,则使用缺省值,“p1,p2,…”表示被积函数出时间t之外所需的其他额外输入参数。
3)数值近似法
我们还可以利用MATLAB的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变换X(w)可以由式(9)近似计算
X(w)????x(t)e???jwtdt?lim?x(k?)e?jwk??...........(9)
??0????当x(t)为时限信号,且?足够小,式(9)可以演变为 X(w)???x(k?)e?jkw?..............(10)
k?ab而式(10)中求和部分又可以表示成一个行向量和一个列向量的乘积
?e?j?a??w???j?(a?1)??w?b?jkw??e?........(11) x(k?)e?[x(a?),x((a?1)?),?,x(b?)]???.....?k?a???j?b??w???e?式(11)可以很方便地利用MATLAB实现。 3.离散周期时间信号的频域分析
基波周期为N的周期序列x(n)可以用N个成谐波关系的复指数序列的加权和表示,即
x(n)?k??N??cekjk(2?/N)n...............(12)
这里k=
傅里叶系数ck也称为x(n)的频谱系数,而且可以证明ck是以N为周期的离散频率序列。这说明了周期的离散时间函数对应于频域为周期的离散频率。
这里,我们用周期N与傅里叶系数ck的乘积来表示周期离散时间信号的频谱,即
X(k)?N?ck?k??N??x(n)e?jk(2?/N)n.........(14)
X(k)可以利用MATLAB提供的函数fft用来计算,调用格式为
X?fft(x)