MATLAB 程序设计实验报告一、实验目的1. 通过实验熟悉MATLAB 仿真软件的使用方法;2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征;3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征;4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。
二、实验设备1. 计算机:2. MATLAB R2007a 仿真软件三、实验原理对系统的时域分析信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。
(1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为)()(1t f t f =)(2t f +;)()(1t f t f =)(2t f *。
(2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。
连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。
(3)信号的平移、翻转和尺度变换信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。
信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。
)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。
¥对系统频率特性的分析(1)系统的频率响应设线性时不变(LTI )系统的冲激响应为)(t h ,该系统的输入(激励)信号为)(t f ,则此系统的零状态输出(响应))(t y 为:)()()(t f t h t y*= (3-1) 假设)(t f ,)(t h 及)(t y 的傅里叶变换分别为)(),(jw H jw F 及)(jw Y ,根据时域卷积定理,与(1-1)式对应的及)(),(jw H jw F 及)(jw Y 在频域上的关系式为:)()()(jw F jw H jw Y ⋅= (3-2) 一般地,连续系统的频率响应定义为系统的零状态响应)(t y 的傅里叶变换)(jw Y 与输入信号)(t f 的傅里叶变换)(jw F 之比,即:)()()(jw F jw Y jw H =(3-3)!通常,)(jw H 可表示成两个有理多项式)(jw B 与)(jw A 的商,即:nn n nmm m m a jw a jw a jw a b jw b jw b jw b jw A jw B jw H ++⋅⋅⋅++++⋅⋅⋅++==----)()()()()()()()()(11211121 (3-4) (2)连续时间信号卷积及MATLAB 实现卷积积分:卷积积分在信号与系统分析中具有非常重要的意义,是信号与系统分析的基本方法之一。
有两个与卷积相关的重要结论:)()()(t t f t f δ*=,即连续信号可分解为一系列幅度由)(t f 决定的冲激信号)(t δ及其平移信号之和;线性时不变连续系统,设其输入信号为)(t f ,单位响应为)(t h ,其零状态响应为)(t y ,则有:)()()(t h t f t y *=。
MATLAB 实现连续时间信号的卷积:将连续信号)(1t f 与)(2t f 以时间间隔∆进行取样,得到离散序列)(1∆k f 和)(2∆k f ;构造与)(1∆k f 和)(2∆k f 相对应的时间向量1k 和2k (注意,此时时间序号向量1k 和2k 的元素不再是整数,而是取样时间间隔∆的整数倍的时间间隔点),最后调用conv()函数可近似的求解连续时间信号的卷积积分。
(3)离散时间信号的卷积离散时间序列)(1k f 和)(2k f 的卷积和定义为:;∑∞-∞=-⋅==i i k f i f k f k f k f )()()(*)()(2121 卷积和可调用conv( )函数执行。
四、实验内容及步骤1.上机实验前,认真阅读实验原理,掌握连续系统频率特性的MATLAB 实现的方法。
2.利用MATLAB 相关命令实现以下实验内容。
(1)利用MATLAB 实现)()(25.0t et f tε-=向右移3和向左移3的波形。
解:实现该过程的MATLAB 命令程序如下:clear;-close all; t=-5::5;x=exp*t).*stepfun(t,0);x1=exp*(t+3)).*stepfun(t,3); x2=exp*(t-3)).*stepfun(t,-3); subplot(331); plot(t,x); grid on;…title('原信号x(t)'); subplot(312); plot(t,x1); grid on;title('左移信号x(t)'); subplot(313); plot(t,x2); grid on;`title('右移信号x(t)'); xlabel('时间t');程序运行结果如图所示:0105时间t(2)设信号)]2()2([)21()(--+⨯+=t t tt f εε,用MATLAB 求)2(+t f ,)2(-t f ,)(t f -,)2(t f ,)(t f -,并绘出其时域波形。
解:实现该过程的MATLAB 命令程序如下:t=-6::6; ]f=(1+1/2*t).*[stepfun(t,-2)-stepfun(t,2)]; f1=(1+1/2*(t+2)).*[(t+2>-2)-(t+2>2)]; f2=(1+1/2*(t-2)).*[(t-2>-2)-(t-2>2)]; f3=(1+1/2*(-t)).*[(-t>-2)-(-t>2)]; f4=(1+t).*[(2*t>-2)-(2*t>2)]; f5=-(1+1/2*t).*[(t>-2)-(t>2)]; subplot(611) plot(t,f); {grid on;title('时域波形'); subplot(612) plot(t,f1); grid on;title('左移信号f(t+2)'); subplot(613) plot(t,f2); …grid on;title('右移信号f(t-2)'); subplot(614) plot(t,f3); grid on;title('翻转信号f(-t)'); subplot(615)·grid on;title('压缩信号f(2t)'); subplot(616) plot(t,f5); grid on;title('反向信号-f(t)'); xlabel('时间t'); (程序运行结果如图所示:时域波形左移信号f(t+2)右移信号f(t-2)压缩信号f(2t)反向信号-f(t)时间t(3)已知1-2-)(1t t f =,t t f 9)(2=,利用MATLAB 计算卷积)()(21t f t f *的波形。
解:实现该过程的MATLAB 命令程序如下: s=;k1=0:s:2; k2=k1;f1=-2*k1-1; *f2=9*k2;f=conv(f1,f2); f=f*s;k0=k1(1)+k2(1);k3=length(f1)+length(f2)-2; k=k0:s:k3*s; subplot(3,1,1); plot(k1,f1); %title('f1(t)'); subplot(3,1,2);title('f2(t)'); subplot(3,1,3); plot(k,f); title('f(t)');程序运行结果如图所示: :(4)设连续时间信号为一个正弦信号t t x π25.0cos )(=,采样周期s T s 81=,试编写程序绘制信号)(t x 和已采样信号)(k x 的波形图。
解:实现该过程的MATLAB 命令程序如下:clear; close all; dt=;t=0:dt:10; Ts=1/8; ,n=0:Ts:10;x=cos*pi*t); xn=cos*pi*n); subplot(211); plot(t,x);title('A continuous-time signal x(t)'),xlabel('Time t'); subplot(212); stem(n,xn,'.'); :title('The sampled version x[n] of x(t)'),xlabel('Time index n');程序运行结果如图所示:01Time tTime index n(5)已知信号)()(4t G t f ,利用MATLAB 实现其傅里叶变换。
解:实现该过程的MATLAB 命令程序如下:clear all; !R=;t=-3:R:3;f=stepfun(t,-1)-stepfun(t,1); w1=2*pi*5;N=500;k=0:N;w=k*w1/N; F=f*exp(-j*t'*w)*R; F=real(F);w=[-fliplr(w),w(2:501)]; F=[fliplr(F),F(2:501)]; `subplot(2,1,1);plot(t,f);xlabel('t');ylabel('f(t)'); title('门函数');subplot(2,1,2);plot(w,F); xlabel('w');ylabel('F(w)'); title('f(t)的傅里叶变换F(w)');程序运行结果如图所示:>tf (t )wF (w )(6)利用MATLAB 实现信号)(98)(2t e t f tε-=及其)1(-t f 的频谱图。