当前位置:文档之家› 信号与系统实验指导书版

信号与系统实验指导书版

《信号与系统》实验指导书中南大学信息科学与工程学院2014年3月目录实验一基本信号的生成 (1)实验二信号的基本运算 (8)实验三系统的时域分析 (13)实验四周期信号的频域分析 (20)实验一 基本信号的生成1.实验目的● 学会使用MATLAB 产生各种常见的连续时间信号与离散时间信号; ● 通过MATLAB 中的绘图工具对产生的信号进行观察,加深对常用信号的理解;● 熟悉MATLAB 的基本操作,以及一些基本函数的使用,为以后的实验奠定基础。

2.实验原理⑴ 连续信号的MATLAB 表示① 指数信号指数信号at Ae 在MATLAB 中可用exp 函数表示,其调用形式为exp()y A a t =**【例1】 单边衰减指数信号的MATLAB 表示如下:(取1,0.4A a ==-) % program exa_1.m, decaying exponentialA=1;a=-0.4;t=0:0.001:10;ft=A*exp(a*t);plot(t,ft)② 正弦信号正弦信号0cos()A t ωφ+和0sin()A t ωφ+分别用MATLAB 的内部函数cos 和sin 表示,其调用形式为cos(0phi)sin(0phi)A w t A w t **+**+ 【例2】 正弦信号的MATLAB 表示如下:(取01,2,/6A ωπφπ===)% program exa_2.m, sinusoidal signalA=1;w0=2*pi;phi=pi/6;t=0:0.001:8;ft=A*sin(w0*t+phi);plot(t,ft)③ 抽样函数抽样函数()Sa t 在MATLAB 中用sinc 函数表示,定义为sinc()sin()/()t t t ππ=其调用形式为y=sinc()t【例3】 抽样函数的MATLAB 表示如下:(取33t ππ=-:)% program exa_3.m, sample functiont=-3*pi:pi/100:3*pi;ft=sinc(t/pi);plot(t,ft)④矩形脉冲信号矩形脉冲信号在MATLAB中用rectpuls函数表示,其调用形式为ty=rectpuls(,width)用以产生一个幅度为1,宽度为width以0t=为对称的矩形波。

width的默认值为1。

【例4】以2=为对称中心的矩形脉冲信号的MATLAB表示如下:(取1t TT=)% program exa_4.m, rectpulst=0:0.001:4;T=1;ft=rectpuls(t-2*T,2*T);plot(t,ft)⑤三角波脉冲信号三角波脉冲信号在MATLAB中用tripuls函数表示,其调用形式为y=tripuls(,width,skew)t用以产生一个最大幅度为1,宽度为width的三角波。

函数值的非零范围为-≤≤+;当skew0 (width/2,width/2)-;参数skew的取值范围为(1skew1)=时,产生标准正三角波。

【例5】三角波脉冲信号的MATLAB表示如下:(取33,4,0.5)=-==:)t width skew% program exa_5.m, tripulst=-3:0.001:3;ft=tripuls(t,4,0.5);plot(t,ft)⑵ 离散信号的MATLAB 表示① 指数序列指数序列k Aa 可用MATLAB 中的数组幂运算.a k ∧实现。

【例6】 衰减指数序列的MATLAB 表示如下:(取1,0.6A a ==-)% program exa_6.m, exponential sequencek=0:10;A=1;a=-0.6;fk=A*a.^k;stem(k,fk)② 正弦序列正弦序列的MATLAB 表示与连续信号相同,只是用stem(k,f)画出序列的波形。

【例7】 正弦序列0sin()k Ω的MATLAB 实现如下:(取0/6πΩ=)% program exa_7.m, discrete-time sinusoidal signal k=0:39;fk=sin(pi/6*k);stem(k,fk)③ 单位脉冲序列单位脉冲序列可借助MATLAB 中的零矩阵函数zeros 表示。

函数zeros(1,N)产生一个由N 个零组成的列向量。

【例8】 有限区间的单位脉冲序列[]k δ的MATLAB 实现如下:(取区间:1010-:)% program exa_8.m, delta sequencek=-10:10;delta=[zeros(1,10),1,zeros(1,10)];% 或者: delta=[(k-0)==0];stem(k,delta)④ 单位阶跃序列单位阶跃序列可借助MATLAB 中的单位矩阵函数ones 表示。

函数ones(1,N)产生一个由N 个1组成的列向量。

【例9】 有限区间的单位阶跃序列[]u k 的MATLAB 实现如下:(取区间:1010-:)% program exa_9.m, unit step sequencek=-10:10;uk=[zeros(1,10),ones(1,11)];% 或者: uk=[k>=0];stem(k,uk)3.实验内容⑴ 运行以上九个例子程序,掌握一些常用基本信号的特点及其MATLAB 实现方法;改变有关参数,进一步观察信号波形的变化。

⑵ 在 k [10:10]=- 范围内产生并画出以下信号:a) 1f [k][k]δ=;b) 2f [k][k+2]δ=;c) 3f [k][k-4]δ=;d) 4f [k]2[k+2][k-4]δδ=-。

⑶ 在 k [0:31]=范围内产生并画出以下信号:a) ()()k k 144f [k]sin cos ππ=;b) ()2k 24f [k]cos π=;c) ()()k k 348f [k]sin cos ππ=。

请问这三个信号的基波周期分别是多少?实验二 信号的基本运算1.实验目的● 学会使用MATLAB 完成信号的一些基本运算;● 了解复杂信号由基本信号通过尺度变换、翻转、平移、相加、相乘、差分、求和、微分及积分等运算来表达的方法;● 进一步熟悉MATLAB 的基本操作与编程,掌握其在信号分析中的运用特点与使用方式。

2.实验原理⑴ 信号的尺度变换、翻转、平移信号的尺度变换、翻转、平移运算,实际上是函数自变量的运算。

在信号的尺度变换()f at 和[]f Mk 中,函数的自变量乘以一个常数,在MATLAB 中可用算术运算符“﹡”来实现。

在信号翻转()f t -和[]f k -运算中,函数的自变量乘以一个负号,在MATLAB 中可以直接用负号“-”写出。

翻转运算在MATLAB 中还可以利用fliplr(f )函数实现,而翻转后信号的坐标则可由fliplr(k)-得到。

在信号时移0()f t t ±和0[]f k k ±运算中,函数自变量加、减一个常数,在MATLAB 中可用算术运算符“+”或“-”来实现。

【例10】 对图示三角波()f t ,试利用MATLAB 画出(2)f t 和(22)f t -的波形。

解:实现(2)f t 和(22)f t -的MATLAB 程序如下:% program exa_10.m, Changed triangular pulse signal t=-3:0.001:3;ft1=tripuls(2*t,4,0.5);subplot(2,1,1)plot(t,ft1)title('f(2t)')ft2=tripuls((2-2*t),4,0.5);subplot(2,1,2)plot(t,ft2)title('f(2-2t)')程序运行结果如下图所示。

⑵ 离散序列的差分与求和离散序列的差分[][][1]f k f k f k ∇=--,在MATLAB 中用diff 函数来实现,其调用格式为:diff()y f = 离散序列的求和21[]k k k f k =∑与信号相加运算不同,求和运算是把1k 和2k 之间的所有样本[]f k 加起来,在MATLAB 中用sum 函数来实现,其调用格式为:f(2t)f(2-2t)sum((1:2))y f k k =【例11】 用MATLAB 计算指数信号(0.6)[]k u k -的能量。

解:离散信号的能量定义为: 2lim []NN k NE f k →∞=-=∑其MATLAB 程序实现如下:% program exa_11.m, the energy of exponential sequence k=0:10;A=1;a=-0.6; fk=A*a.^k;W=sum(abs(fk).^2) 程序运行结果为:W =1.5625⑶ 连续信号的微分与积分连续信号的微分也可以用上述diff 函数来近似计算。

例如,22sin()2cos()y x x x '==可由下列MATLAB 语句来近似实现:h=.001;x=0:h:pi;y=diff(sin(x.^2))/h;连续信号的定积分可由MATLAB 中quad 函数或quad8函数来实现。

其调用格式为:quad ('function_name',a,b)其中function_name 为被积函数名(.m 文件名),a 和b 为指定的积分区间。

【例12】 用对图示三角波()f t ,试利用MATLAB 画出()d f t dt和()t f d ττ-∞⎰的波形。

解:为了便于利用quad函数来计算信号的积分,将图示三角波()f t写成MATLAB 函数,函数名为functri(相应的.m文件名为functri.m),程序如下:function yt=functri(t)yt=tripuls(t,4,0.5);然后利用diff和quad函数,并调用自编函数functri即可实现三角波信号()f t 的微分和积分,源程序如下:% program exa_12_1.m, differentiationh=0.001;t=-3:h:3;y1=diff(functri(t))*1/h;plot(t(1:length(t)-1),y1)title('df(t)/dt')程序运行结果如图所示:Array% program exa_12_2.m, integrationt=-3:0.1:3;for x=1:length(t)y2(x)=quad('functri',-3,t(x));endplot(t,y2)title('integral of f(t)')程序运行结果如图所示:3.实验内容⑴ 运行以上三个例题程序,掌握信号基本运算的MATLAB 实现方法;改变有关参数,考察相应信号运算结果的变化特点与规律。

相关主题