LTI系统复频域分析的MATLAB实现精品资料.doc
实验项目名称:LTI系统复频域分析的MATLAB实现上机实验题目:拉氏变换与Z变换的基本性质在系统分析中的应用实验项目的目的和任务:掌握拉氏变换、Z变换的基本性质及其在系统分析中的典型应用实验题目:第9章第10章实验过程9a_1b=1,5 0;a=1,2,3;zs=roots(b)ps=roots(a)plot(real(zs),imag(zs),'o');hold onplot(real(ps),imag(ps),'x');gridaxis(-5 2 -2 2);运行截图:9a_2b=2,5,12;a=1,2,10;zs=roots(b)ps=roots(a)plot(real(zs),imag(zs),'o');hold onplot(real(ps),imag(ps),'x');gridaxis(-10 10 -10 10);运行截图:9a_3b=2,5,12;a=1,4,14,20;zs=roots(b)ps=roots(a)plot(real(zs),imag(zs),'o');hold onplot(real(ps),imag(ps),'x');gridaxis(-10 10 -10 10);运行截图:9c、经过拉氏变换之后得到的系统函数为:b=1,2,5;a=1,-3;zs=roots(b)ps=roots(a)plot(real(zs),imag(zs),'o');hold onplot(real(ps),imag(ps),'x');gridaxis(-10 10 -10 10);运行截图:10、dpzplot函数代码:function dpzplot(b,a)la=length(a);lb=length(b);if (la>lb) b=b zeros(1,la-lb);elseif (lb>la) a=a zeros(1,lb-la);endps=roots(a);zs=roots(b);mx=max(abs(ps' zs' .95)+0.05;clgaxis(-mx mx -mx mx);axis('equal');hold onw=0:0.01:2*pi;plot(cos(w),sin(w),'.');plot(-mx mx,0 0);plot(0 0,-mx mx);text(0.1,1.1,'Im','sc');text(1.1,0.1,'Re','sc');plot(real(ps),imag(ps),'rx');plot(real(zs),imag(zs),'ro');numz=sum(abs(zs)=0);nump=sum(abs(ps)=0);if numz>1 text(-.1,-.1,num2str(numz);elseif nump>1 text(-.1,-.1,num2str(nump);endhold offend10ab=1 -1 0;a=1 3 2;dpzplot(b,a);运行截图:10b经过Z变换之后可以得到:b=1 0 0;a=1 1 0.5;dpzplot(b,a);运行截图:10c经过Z变换之后可以得到b=1 0.5 0 0;a=1 -1.25 0.75 -0.125;dpzplot(b,a);运行截图:实验总结这次实验较以往的实验都容易,基本上就是按照课本上的程序来重新输入一遍就几乎能得到结果了,所以能很快完成。但是还需要大家对拉普拉斯变换和z变换有一定的了解,而且需要知道roots函数的用法。附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号' 共轭转置.'一般转置3 关系运算符=等于<小于>大于<=小于或等于>=大于或等于=不等于4 常用内部数学函数 指数函数exp(x)以e为底数对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数imag(z)虚部函数abs(z)求复数z的模angle(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算compose(f,g) 返回值为f(g(y)compose(f,g,z) 返回值为f(g(z)compose(f,g,x,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(Maple的数学式转换命令) 即:maple(convert(表达式,form)将表达式转换成form的表示方式 maple(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple('maple中解不等式的命令')具体说,包括以下五种:maple(' solve(不等式)') maple(' solve(不等式,变元)' ) maple(' solve(不等式,变元)' ) maple(' solve(不等式,变元)' ) maple(' solve(不等式,变元)' )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下: maple('maple中解不等式组的命令') 即:maple(' solve(不等式组,变元组)' )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot('f(x)',xmin,xmax) fplot('f(x)',xmin,xmax,ymin,ymax) 方法3:ezplot('f(x)') ezplot('f(x)' ,xmin,xmax) ezplot('f(x)' ,xmin,xmax,ymin,ymax) 17 求极限(1) 极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:syms x limit(f(x), x, a,left) 右极限:syms x limit(f(x), x, a,right) 18 求导数diff('f(x)') diff('f(x)','x') 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff('f(x)',n) diff('f(x)','x',n) 或者:syms x diff(f(x),n)syms x diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下: maple('implicitdiff(f(x,y)=0,y,x)') 在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式 一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。21 求不定积分 int('f(x)') int ('f(x)','x') 或者:syms x int(f(x) syms x int(f(x), x) 22 求定积分、广义积分 int('f(x)',a,b) int ('f(x)','x',a,b) 或者:syms x int(f(x),a,b) syms x int(f(x), x,a,b) 23 进行换元积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的changevar命令,调用方法如下:maple(' with(student)' ) 加载student函数库后,才能使用changevar命令maple(' changevar( m(x)=p(u), Int(f(x),x) ) ' ) 把积分表达式中的m(x)代换成p(u)24 进行分部积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的intparts命令,调用方法如下: maple(' with(student)' ) 加载student函数库后,才能使用intparts命令maple('intparts(Int(f(x),x),u)' ) 指定u,用分部积分公式 进行计算 25 对数列和级数进行求和 syms n symsum(f(n), n a ,b ) 26 进行连乘 maple('product(f(n),n=a.b)')27 展开级数syms x taylor(f(x), x, n, a )28 进行积分变换syms s t laplace( f(t), t, s ) 拉普拉斯变换 ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t fourier( f(t), t, ) 傅立叶变换 ifourier( F(), , t ) 傅立叶变换的逆变换 syms n z ztrans( f(n), n, z) Z变换 iztrans( F(z), z, n ) Z变换的逆变换 在matlab中,矩形法、梯形法和辛普森法求近似积分可以用自身的命令,也可调用Maple的相应命令。调用方法如下: maple('with(student) ') maple('Maple中求定积分近似值的命令')29 解微分方程dsolve('微分方程','自变量') dsolve('微分方程','初始条件或边界条件','自变量')30 解微分方程组dsolve('微分方程组','自变量') dsolve('微分方程组','初始条件或边界条件','自变量')