计算机仿真技术复习总结.doc_第1页
计算机仿真技术复习总结.doc_第2页
计算机仿真技术复习总结.doc_第3页
计算机仿真技术复习总结.doc_第4页
计算机仿真技术复习总结.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机仿真技术复习总结y=zeros(m,n)两个作用:为矩阵y赋初值为矩阵y分配mn的存储空间sum(x):矩阵各列元素的和几个取整函数的区别:round4舍5入到整数fix向最接近0取整floor向最接近-取整ceil向最接近+取整exp自然指数log自然对数log10以10为底的对数数组寻址:1通过对数组下标的访问来实现数组寻址 A=1:6A =1 2 3 4 5 6访问单个元素时,直接采用访问下标的方法。 A(4)ans =4一次访问一块数据(即访问数组中的连续元素),可以使用冒号。 A(2:6)ans =2 3 4 5 6访问多个不连续的元素,可以使用中括号。 A(1 3 4 6)ans =1 3 4 6end参数用来表示数组的结尾。 A(3:end)ans =3 4 5 6图形对象属性:包括属性名与属性值用get函数获取属性值用set函数设置属性值2.1矩阵和数组的概念标量(Scalar):是指11的矩阵,即只含一个数的矩阵。向量(Vector):是指1n或n1的矩阵,即只有一行或者一列的矩阵。矩阵(Matrix):是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,00矩阵为空矩阵()。数组(Array):是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。z=a+b*i或z=a+b*jz=a+bi或z=a+bj(当b为常量时)z=r*exp(i*theta)得出一个复数的实部、虚部、幅值和相角。a=real(z) %计算实部b=imag(z) %计算虚部r=abs(z) %计算幅值t=angle(z) %计算相角1. 变量的命名规则区分字母的大小写。例如,“a”和“A”是不同的变量。不能超过63个字符,第63个字符后的字符被忽略。必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。例如,“6ABC”、“AB%C”都是不合法的变量名。关键字(如if、while等)不能作为变量名。1. 通过显式元素列表输入矩阵例如: c=1 2;3 4;5 3*2% 表示构成矩阵,分号分隔行,空格分隔元素2.通过语句生成矩阵(1) 使用from:step:to方式生成向量from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1。使用“from:step:to”方式生成以下矩阵。x1=2:5x1 =2 3 4 5x2=5:-1:2x2 =5 4 3 2x3=2:-1:3%空矩阵x3 =Empty matrix: 1-by-0X4=2:-1:0.5X4 =2 1x5=1:2:5;1:3:7%两行向量构成矩阵x5 =1 3 51 4 7(2) 使用linspace和logspace函数linspace(a,b,n)a、b、n分别表示开始值、结束值和元素个数,n如果省略则默认值为100 。logspace(a,b,n)a、b、n分别表示开始值10a 、结束值10b和数据个数,n,如果省略则默认值为50 。3. 由矩阵生成函数产生特殊矩阵zeros(m,n) 产生mn的全0矩阵ones(m,n) 产生mn的全1矩阵rand(m,n) 产生均匀分布的随机矩阵,元素取值范围0.01.0。randn(m,n) 产生正态分布的随机矩阵magic(N) 产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等)eye(m,n) 产生mn的单位矩阵zeros、ones、rand、randn和eye函数当只有一个参数n时,则为nn的方阵;当eye(m,n)函数的m和n参数不相等时则单位矩阵会出现全0行或列。2.2.2 矩阵元素1. 矩阵的下标(Subscript)(1) 全下标方式一个mn的a矩阵的第i行第j列的元素表示为a(i,j)。(2) 单下标方式以mn的矩阵a为例,若元素a(i,j)则对应的“单下标”为s= (j-1)mi。2. 子矩阵块的产生子矩阵是从对应矩阵中取出一部分元素构成,用全下标和单下标方式取子矩阵。(1) 用全下标方式取行数为1、3,列数为2、3的元素构成子矩阵。a(1 3,2 3)ans =2 06 9取行数为13,列数为23的元素构成子矩阵,“1:3”表示1、2、3行下标。a(1:3,2:3)ans =2 04 06 9(2) 用单下标方式取单下标为1、3、2、6的元素构成子矩阵。a(1 3;2 6)ans =1 53 63. 矩阵的赋值矩阵的赋值有:全下标方式、单下标方式和全元素方式。4. 矩阵元素的删除可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作 ,就是简单地将其赋值为空矩阵(用表示)。EX:a(:,3)= %删除一列元素a(1)= %删除一个元素,矩阵变为向量a= %删除所有元素为空矩阵5. 生成大矩阵(Concatenating Matrices)可以通过方括号“”实现将小矩阵生成一个较大的矩阵。例:a;a 与a,a的区别6. 常用矩阵翻转函数:flipud(X)使矩阵X沿水平轴上下翻转fliplr(X)使矩阵X沿垂直轴左右翻转rot90(X)使矩阵X逆时针旋转9002.2.3 字符串(Character Arrays)一个字符串由多个字符组成,用单引号()来界定。字符串是按行向量进行存储的。1. 字符串占用的字节每一个字符会占用两个字节。 str2=I like MATLAB%重复单引号来输入含有单引号的字符串2. 字符串函数length:用来计算字符串的长度。double:用来查看字符串的ASCII码储存内容。char:用来将ASCII码转换成字符串形式。class或ischar:用来判断某一个变量是否为字符串。3. 使用一个变量来储存多个字符串(1) 多个字符串组成一个新的行向量将多个字符串变量直接用“,”连接,构成一个行向量,就可以得到一个新字符串变量。(2) 使用二维字符数组将每个字符串放在一行,多个字符串可以构成一个二维字符数组,但必须先在短字符串结尾补上空格符,以确保每个字符串(即每一行)的长度一样。否则会提示出错:(3) 使用str2mat、strvcat和char函数使用专门的str2mat、strvcat和char函数可以构造出字符串矩阵,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。例如: str6=str2mat(str1,str2,str3)5. 执行字符串使用eval命令直接“执行”某一字符串。6. 显示字符串直接使用disp命令显示字符串。 disp(请输入2*2的矩阵a)矩阵运算的函数det(X):计算方阵行列式rank(X):求矩阵的秩,得出的行列式不为零的最大方阵边长。inv(X):求矩阵的逆阵。 inv(X)=X-1v,d=eig(X):计算矩阵特征值和特征向量diag(X):产生X矩阵的对角阵v,d=eig(X) 计算矩阵特征值和特征向量。如果方程Xv=vd存在非零解,则v为特征向量,d为特征值。(1) 矩阵和数组的加(addition)、减运算(subtraction)矩阵加、减运算表达式分别为“A+B”、“A-B”。(2) 矩阵和数组的乘法运算(muliplication)矩阵的乘法运算表达式为“A*B” 。矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。数组的乘法运算表达式为“A.*B” ,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。(3) 矩阵和数组的除法矩阵除法可以用来方便地解线性方程组:AX=B X=ABA*X=B X= inv(A)*B=AB矩阵运算符为“”和“/”分别表示左除和右除。AB=A-1*BA/B=A*B-1。其中:A-1是矩阵的逆,也可用inv(A)求逆矩阵。数组的除法运算表达式“A.B”和“A./B”,分别为数组的左除和右除,表示数组相应元素相除。A和B数组必须大小相同,除非其中有一个是标量。【例2.12】已知方程组,用矩阵除法来解线性方程组。解:将该方程变换成AX=B的形式。其中:,A=2 -1 3;3 1 -5;4 -1 1;B=5;5;9;X=AB;X =2 -1 0在线性方程组A*X=B中,mn阶矩阵A的行数m表示方程数,列数n表示未知数的个数。n=m,A为方阵,ABinv(A)*B。m n,是最小二乘解,X=inv(A*A)*(A*B)m n ,则是令X中的n-m个元素为零的一个特殊解。X=inv(A*A)*(A*B)A.B左除,B的元素被A的对应元素除AB左除,inv(A)* BA./B右除,A的元素被B的对应元素除A/B右除,A* inv(B)x1.x2 %数组左除(x2被 x1除)x1./x2 %数组右除(x1被 x2除) 数组或矩阵的对应元素相除(4) 矩阵和数组的乘方矩阵乘方的运算表达式为“AB”,其中A可以是矩阵或标量。当A为矩阵,必须为方阵:B为正整数时,表示A矩阵自乘B次;B为负整数时,表示先将矩阵A求逆,再自乘|B|次,仅对非奇异阵成立;B为矩阵时不能运算,会出错;B为非整数时,将A分解成A=W*D/W,D为对角阵,则有AB=W*DB/W。当A为标量:B为矩阵时,将A分解成A=W*D/W,D为对角阵,则有AB=W*diag(D.B)/W。数组乘方的运算表达式“A.B”。当A为矩阵,B为标量时,则将A(i,j)自乘B次;当A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)次;当A为标量,B为矩阵时,将A B(i,j)构成新矩阵的第i行第j列元素。5. 关系操作和逻辑操作关系运算:关系操作符有:、=、 = =(等于)、 =(不等于)。关系运算规则:如果两个标量,则结果为真(1)或假(0)。如果比较的两个数组变量,则必须大小相同,数组的元素为0或1。如果比较一个数组和一个标量,则把数组的每个元素分别与标量比较。、=仅对变量的实部进行比较,而= = 和 = 则同时对实部和虚部进行比较。逻辑操作符有:&(and)、|(or)、(not)和xor、&(先决与)、| (先决或) 。在MATLAB中各种运算符的优先级如下:(矩阵转置)、(矩阵幂)和.(数组转置)、.(数组幂) (逻辑非) *(乘)、/(左除)、(右除)和.*(点乘)、./(点左除)、.(点右除) +、-(加减): (冒号) 、=、= &(逻辑与) |(逻辑或) &(先决与) |(先决或),逻辑运算规则:在逻辑运算中,非0元素表示真(1),0元素表示假(0),逻辑运算的结果为0或1关系运算和逻辑运算: b=0 1;1 0b =0 11 0 find(b)ans = 2 3 a=1,2,3,4,5a = 1 2 3 4 5 b=ab = 1 2 3 4 5 b(a=3)=1b = 1 2 1 1 1注:关系和逻辑运算很重要。由于MATLAB以0和1表示关系运算和逻辑运算的结果,所以巧妙利用关系运算和逻辑运算能对函数值进行分段处理,即不需条件判断就能求分段函数的值。(3) 函数运算关系逻辑函数all(A)判断A的列向量元素是否全非0,全非0则为1any(A)判断A的列向量元素中是否有非0元素,有则为1isequal(A,B)判断A、B对应元素是否全相等,相等为1isempty(A)判断A是否为空矩阵,为空则为1,否则为0isfinite(A)判断A的各元素值是否有限,是则为1isinf(A)判断A的各元素值是否无穷大,是则为1isnan(A)判断A的各元素值是否为NAN,是则为1isnumeric(A)判断数组A的元素是否全为数值型数组isreal(A)判断数组A的元素是否全为实数,是则为1isprime(A)判断A的各元素值是否为质数,是则为1isspace(A)判断A的各元素值是否为空格,是则为1find(A)寻找A数组非0元素的下标和值2.2、多维数组的创建(1) 通过“全下标”元素赋值方式创建(2) 由函数ones、zeros、rand和randn直接创建(3) 利用函数生成数组将一系列数组沿着特定的维连接成一个多维数组。 cat(维,p1,p2,)按指定行列数放置模块数组生成多维数组repmat(p)。在总元素的数目不变的前提下重新确定数组的行列数来重组数组。reshape(p)多项式按降幂排列为:p(x)=anxn+an-1xn-1+a1x+a0用行向量表示为:p=an an-1 a1 a0即把多项式的各项系数按降幂次序排放成行向量,如果多项式中缺某幂次项,则用零代替该幂次项的系数。例如: x3+21x2+20x p1=1 21 20 01. 多项式求值函数polyval(p,s)可以用来计算多项式在给定变量时的值。P为多项式,s为给定值2. 多项式求根Roots:用来计算多项式的根。Poly:根据多项式的根来计算多项式的系数。3. 特征多项式函数poly计算矩阵的特征多项式的系数。特征值用roots函数来计算。4. 部分分式展开用residue函数来实现将分式表达式进行多项式的部分分式展开。r,p,k=residue(b,a)b,a=residue(r,p,k)1. 多项式的乘法和除法多项式的乘法和除法运算分别使用函数conv和deconv来实现,这两个函数也可以对应于卷积和解卷运算。p=conv(pl,p2)q,r = deconv(v,u)多维数组:reshape函数:在总元素的数目不变的前提下重新确定数组的行列数来重组数组(P55)reshape(p,行 列 页 )说明:第一个变量是待重组的数组p,后面的变量是重新生成数组的行数、列数、页数。 a=1,2,3;4,5,6a =1 2 34 5 6 b=reshape(a,1,6)注:此处是按单下标的方式重组数组2. 多项式的微分和积分多项式的微分由polyder函数实现。可以用p./length(p):-1:1,k的方法来完成积分,k为常数。第三章符号计算是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。与数值运算的区别: 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。3.1 符号表达式的建立 3.1.1 创建符号常量符号常量是不含变量的符号表达式。sym(常量) %创建符号常量sym(常量,参数) %按某种格式转换为符号常量说明:参数可以选择为d、f、e或r 四种格式,也可省略。EX: a=sym(sin(2) a=sym(sin(2),r)3.1.2 创建符号变量和表达式1. 使用sym命令创建符号变量和表达式sym(变量,参数) %把变量定义为符号对象2.使用syms命令创建符号变量和符号表达式syms(arg1, arg2, ,参数)syms arg1 arg2 ,参数例如: f1=sym(a*x2+b*x+c) %创建表达式 syms a b c x %创建变量 f2=a*x2+b*x+c %创建表达式 syms(a,b,c,x) f3=a*x2+b*x+c符号表达式()中的参数一定要用 单引号括起来。3.1.3 符号矩阵例如,使用sym命令创建的符号矩阵: A=sym(a,b;c,d)例如,使用syms命令创建相同的符号矩阵: syms a b c d A=a b;c d3.2.1符号表达式的代数运算1. 符号运算中的运算符基本运算符运算符“”,“”,“*”,“”,“/”,“”分别实现符号矩阵的加、减、乘、左除、右除、求幂运算。运算符“.*”,“./”,“.”,“.”分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算。运算符“”,“.”分别实现符号矩阵的共轭转置、非共轭转置。(2)关系运算符运算符“= =”、“=”分别对运算符两边的符号对象进行“相等”、“不等”的比较。在Symbolic Math Toolbox中有三种不同的算术运算:数值型:MATLAB的浮点运算。有理数型:Maple的精确符号运算。VPA型:Maple的任意精度运算。任意精度的VPA型运算可以使用digits和vpa命令来实现。digits(n)%设定默认的精度S=vpa(s,n) %将s表示为n位有效位数的符号对象自由变量的确定原则:符号表达式“f=ax2+bx+c” 中只有一个变量是独立变量:小写字母i和j不能作为自由变量。符号表达式中如果有多个符号变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。大写字母比所有的小写字母都靠后。也可以用findsym函数来自动确定。3.3.3 符号表达式的替换(Substitutions)subs函数:对符号表达式中符号变量的替换。subs(s)%用给定值替换符号表达式s中的所有变量subs(s,new)%用new替换符号表达式s中的自由变量subs(s,old,new) %用new替换符号表达式s中的old变量例: f=sym(x3-6*x2+11*x-6) x=5 subs(f)subs(f,5)subs(f,x,5)可以用来计算多项式的值,以及化简。3.4 符号极限、微积分和级数求和3.4.1符号极限(Limits)【例3.14】分别求1/x在0处从两边趋近、从左边趋近和从右边趋近的三个极限值。 f=sym(1/x) limit(f) %对x求趋近于0的极限 limit(f,x,0) %对x求趋近于0的极限 limit(f,x,0,left) %左趋近于0 limit(f,x,0,right) %右趋近于03.4.2 符号微分 (Differentiation)函数diff是用来求符号表达式的微分。diff(f)%求f对自由变量的一阶微分diff(f,t)%求f对符号变量t的一阶微分diff(f,n)%求f对自由变量的n阶微分diff(f,t,n)%求f对符号变量t的n阶微分3.4.3 符号积分(Integration)积分有定积分和不定积分,运用函数int可以求得符号表达式的积分,即找出一个符号表达式F使得diff(F)=f,也可以说是求微分的逆运算。int(f,t) %求符号变量t的不定积分int(f,t,a,b) %求符号变量t的定积分int(f,t,m,n) %求符号变量t的定积分3.4.4 符号级数1. symsum函数(Symbolic Summation)symsum(s,x,a,b)%计算表达式s的级数和说明:x为自变量,x省略则默认为对自由变量求和;s为符号表达式;a,b为参数x的取值范围。2. taylor函数(Taylor Series)taylor(F,x,n) %求泰勒级数展开说明:x为自变量,F为符号表达式;对F进行泰勒级数展开至n项,参数n省略则默认展开前5项。4.1.1基本绘图命令plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。语法:plot(x) %绘制以x为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线说明:x和y可以是向量或矩阵。4.1二维曲线的绘制1. plot(x) 绘制x向量曲线当x是长度为n的数值向量,则坐标系的纵坐标为向量x,横坐标为MATLAB系统根据x向量的元素序号自动生成的从1开始的向量。plot(x)命令是在坐标系中顺序地用直线段连接各点,生成一条折线,当向量的元素充分多时,可以得到一条光滑的曲线。2. plot(x,y) 绘制向量x和y的曲线当参数x和y都是长度为n的向量,x、y的长度必须相等,plot(x,y)命令绘制纵坐标为向量y横坐标为向量x的曲线。【例4.2】绘制正弦曲线y=sin(x)和方波曲线,如图4.2所示。 x1=0:0.1:2*pi; y1=sin(x1); %y1为x1的正弦函数 plot(x1,y1) x2=0 1 1 2 2 3 ; y2=1 1 0 0 1 1 ; plot(x2,y2) axis(0 4 0 2) %将坐标轴范围设定为0-4和0-21. 指定图形窗口在4.1.1小节中介绍的plot命令,绘制的图形都是在默认的“Figure No.1”窗口中绘制的,当第二次使用plot命令时,就将第一次绘制的图形覆盖了。因此,如果需要多个图形窗口同时打开时,可以使用figure语句。语法:figure(n) %产生新图形窗口说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n”,而不关闭其它窗口。例如,可以使用“figure (1)”、“figure (2)”等语句来同时打开多个图形窗口。2. 同一窗口多个子图如果需要在同一个图形窗口中布置几幅独立的子图,可以在plot命令前加上subplot命令来将一个图形窗口划分为多个区域,每个区域一幅子图。语法:subplot(m,n,k)%使(mn)幅子图中的第k幅成为当前图【例4.6】用subplot命令画四个子图,如图4.6所示。 x=0:0.1:2*pi; subplot(2,2,1) %分割为2*2个子图,左上方为当前图 plot(x,sin(x) subplot(2,2,2) %右上方为当前图 plot(x,cos(x) subplot(2,2,3) %左下方为当前图 plot(x,sin(3*x) subplot(224) %右下方为当前图,省略逗号 plot(x,cos(3*x)3. 同一窗口多次叠绘在当前坐标系中绘图时,每调用一次plot函数,会擦掉图形窗口中已有的图形。为了在一个坐标系中增加新的图形对象,可以用“hold”命令来保留原图形对象。语法:hold on %使当前坐标系和图形保留hold off %使当前坐标系和图形不保留hold %在以上两个命令中切换说明:在设置了“hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。【例4.7】在同一窗口画出函数sinx在区间0 2的曲线和cosx在区间- 的曲线,如图4.7(a)所示。 x1=0:0.1:2*pi; plot(x1,sin(x1) hold on x2=-pi:.1:pi; plot(x2,cos(x2)4. 双纵坐标图语法:plotyy(x1,y1,x2,y2)%以左、右不同纵轴绘制两条曲线说明:左纵轴用于(x1,y1)数据,右纵轴用于(x2,y2)数据来绘制两条曲线。坐标轴的范围、刻度都自动产生。【例4.7续】用plotyy函数实现在同一图形窗口绘制两条曲线,如图4.7(b)所示。 plotyy(x1,sin(x1),x2,cos(x2)4.2设置坐标轴和文字标注2. 分格线和坐标框(1) 使用grid命令显示分格线语法:grid on%显示分格线grid off%不显示分格线grid%在以上两个命令间切换说明:不显示分格线是MATLAB的默认设置。分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。(2) 使用box命令显示坐标框语法:box on%使当前坐标框呈封闭形式box off%使当前坐标框呈开启形式box %在以上两个命令间切换3. 文字标注图形的文字标注是指在图形中添加标识性的注释,文字标注包括:图名(Title)、坐标轴名(Label)、文字注释(Text)和图例(Legend)。(1) 添加图名语法:title(s)%书写图名说明:s为图名,为字符串,可以是英文或中文。(2) 添加坐标轴名语法:xlabel(s) %横坐标轴名ylabel(s) %纵坐标轴名(3) 添加图例语法:legend(s,pos) %在指定位置建立图例legend off %擦除当前图中的图例说明:参数s是图例中的文字注释,如果多个注释则可以用s1,s2,的方式;参数pos是图例在图上位置的指定符,它的取值如表4.4所示。pos取值012341图例位置自动取最佳位置右上角(默认)左上角左下角右下角图右侧(4) 添加文字注释语法:text(xt,yt,s)%在图形的(xt,yt)坐标处书写文字注释【例4.10】在图形窗口中添加文字注释,如图4.10所示。 x=0:0.1:2*pi; plot(x,sin(x) hold on plot(x,cos(x),ro) title(y1=sin(x),y2=cos(x) %添加标题 xlabel(x) %添加横坐标名 legend(sin(x),cos(x),4) %在右下角添加图例 text(pi,sin(pi),x=pi) %在pi,sin(pi)处添加文字注释4.2.1绘制三维线图命令三维曲面图的绘制:MATLAB绘制网线图和曲面图的函数分别是mesh( )和surf( ),其具体操作步骤是:用函数meshgrid( )生成平面栅格点矩阵X,Y;由X,Y计算函数数值矩阵Z;用mesh( )绘制网线图,用surf( )绘制曲面图1. meshgrid命令为了绘制三维立体图形,MATLAB的方法是将x方向划分为m份,将y方向划分为n份,meshgrid命令是以x、y向量为基准,来产生在x-y平面的各栅格点坐标值的矩阵。语法:X,Ymeshgrid(x,y)说明:X、Y是栅格点的坐标,为矩阵;x、y为向量。例如,将x(1m)向量和y(1n)向量转换为(nm)的矩阵:x=1 2 3 4;y=5 6 7;xx,yy=meshgrid(x,y)在MATLAB的三维图形命令中plot3最易于理解,plot3是用来绘制三维曲线的。语法:plot3(x,y,z, s) %绘制三维曲线plot3(x1,y1,z1, s1,x2,y2,z2, s2,) %绘制多条三维曲线【例4.13】三维曲线绘图,如图4.12所示。 x=0:0.1:20*pi; plot3(x,sin(x),cos(x) %按系统默认设置绘图2. 三维网线图语法:mesh(z) %画三维网线图mesh(x,y,z,c)【例4.14续】用mesh查看peaks函数的三维网线图,如图4.15所示。 mesh(xx,yy,zz)3. 三维曲面图 语法:surf (z) %画三维曲面图surf (x,y, z,c)【例4.14续】用surf查看peaks函数的三维曲面图,如图4.16所 surf (xx,yy,zz)4. 其它立体网线图和曲面图立体网线图mesh命令还有几种格式,meshc命令为立体网状图加等高线;meshz为立体网状图加“围裙”。【例4.14续】用meshz和meshc查看peaks函数的三维曲面图,如图4.17所示。 meshz(xx,yy,zz) meshc(xx,yy,zz)第五章M 函数文件的基本格式:函数声明行H1行(用%开头的注释行)在线帮助文本(用%开头)编写和修改记录(用%开头)函数体说明:(1) 函数声明行(the Function Definition Line)是M函数文件必须有的,M脚本文件没有;函数名和文件名一致,当不一致时,MATLAB以文件名为准;(2) H1行通常包含大写的函数文件名,可以提供给help和lookfor关键词查询使用;(3) 在线帮助文本通常包含函数输入输出变量的含义、格式说明;(4) 编写和修改记录一般在空一行后,记录作者、日期和版本记录,用于软件档案管理。(5) 函数体由实现M函数文件功能的MATLAB命令组成。5.2 程序流程控制5.2.1 for . end循环结构for 循环变量=array循环体end说明:执行的次数就是array的列数,array可以是向量也可以是矩阵,循环变量依次取array的各列,每取一次循环体执行一次。例:for n=1:2:10循环五次5.2.2 while . end循环结构while 表达式循环体end说明:表达式可以是向量也可以是矩阵,如果为矩阵则当所有的元素都为真才执行循环体,如果表达式为nan,MATLAB认为是假,不执行循环体。例如:While n0end5.2.3 Ifelseend条件转移结构if 条件式1语句段1elseif 条件式2语句段2.else语句段n+1end说明:Ifelseend结构也可以是没有elseif和else的简单结构。5.2.4 switchcase开关结构switch 开关表达式case 表达式1语句段1case表达式2语句段2.otherwise语句段nend说明:(1) 如果表达式1不满足,则与下一个表达式2比较,如果都不满足则执行otherwise后面的语句段n。(2) 开关表达式只能是标量或字符串。(3) case后面的表达式可以是标量、字符串或元胞数组,如果是元胞数组则将开关表达式与元胞数组的所有元素进行比较。1. 子函数(Subfunctions)在M函数文件中只有一个主函数,其它则为子函数。(1) 在一个M文件中,主函数必须出现在最上方,其后是子函数,子函数的次序无任何限制;(2) 子函数不能被其它文件的函数调用,只能被同一文件中的函数(可以是主函数或子函数)调用;(3) 同一文件的主函数和子函数变量的工作空间相互独立;(4) 用help和lookfor命令不能提供子函数的帮助信息。function Ex0511()%主函数z1=0.3;Ex0502(z1); %调用Ex0502hold onz1=0.5Ex0502(z1) %调用Ex0502z1=0.707;Ex0502(z1) %调用Ex0502function y=Ex0502(zeta)%子函数,画二阶系统时域曲线x=0:0.1:20;y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta)plot(x,y)2. 私有函数(Private Functions)私有函数是指存放在private子目录中的M函数文件,具有以下性质:(1)在private目录下的私有函数,只能被其父目录的M函数文件所调用,而不能被其它目录的函数调用;(2)私有函数父目录的M脚本文件也不可调用私有函数;(3)在函数调用搜索时,私有函数优先于其它MATLAB路径上的函数。3. 调用函数的搜索顺序在MATLAB中调用一个函数,搜索的顺序如下:查找是否子函数;查找是否私有函数;从当前路径中搜索此函数;从搜索路径中搜索此函数。函数调用的格式:输出参数1,输出参数2,=函数名(输入参数1,输入参数2,)1. 参数传递规则函数内变量与外界(包括其它函数和工作空间)的唯一联系就是通过函数的输入输出参数。输入参数在函数中的任何变化,都仅在函数内进行,不会传递回去。【例5.13】将【例5.11】画二阶系统时域的函数修改,使用输入输出参数来实现参数传递。function Ex0513()% EX0513 参数传递绘制二阶系统时域响应z1=0.3;x1,y1=Ex0502(z1);plot(x1,y1)hold onz1=0.5;x2,y2=Ex0502(z1);plot(x2,y2)function x,y=Ex0502(zeta)%子函数,画二阶系统时域曲线x=0:0.1:20;y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin. (sqrt(1-zeta2)*x+acos(zeta);程序分析:主函数Ex0513调用子函数Ex0502,子函数中的zeta为输入参数,函数调用时将z1传递给子函数zeta,子函数计算后将输出参数x和y传回给主函数的x1、y1。2. 函数参数的个数(1) nargin和nargout变量函数的输入输出参数的个数可以通过变量nargin和nargout获得。nargin用于获得输入参数的个数,nargout用于获得输出参数的个数。(2) varargin和varargout变量“varargin”和“varargout”可以获得输入输出变量的各元素内容,varargin和varargout都是元胞数组。【例9.5】单位冲激序列和单位阶跃序列n=-5:5;y1=zeros(1,length(n);y1(n=0)=1;y2=zeros(1,length(n);y2(n=0)=1;subplot(211),stem(n,y1,.),ylim(0,2),title(单位冲激序列);subplot(212),stem(n,y2,.),ylim(0,2),title(单位阶跃序列);例9-10 生成一个实指数序列的程序如下:%实指数序列n=-5:5;y=2.n;stem(n,y,r*)axis(-5,5,0,50)xlabel(n);ylabel(xn);【例9.9】编写卷积积分的计算函数function f,t=ctsconv(f1,f2,t1,t2,Ts)%计算连续时间信号的卷积积分:f=f1*f2%f1、f2:输入信号的样值向量%t1、t2:输入信号的时间向量%Ts:采样间隔%t1、t2的采样间隔必须等于Ts%-f=conv(f1,f2); %计算序列f1与f2的卷积和ff=f*Ts; %计算卷积积分信号f(t)离散样值t0=t1(1)+t2(1) ; %计算序列f非零样值的起点位置l=length(t1)+length(t2)-2; %计算卷积积分f的非零样值的宽度t=t0:Ts:(t0+l*Ts) %确定卷积积分f非零样值的时间向量连续函数的卷积【例9.10】已知x(t)=u(t)-u(t-1),h(t)=u(t-1)-u(t-3),求y=x(t)*h(t)clear;p=0.01;t1=0:p:1;f1=ones(size(t1);t2=1:p:3;f2=ones(size(t2);f,t=ctsconv(f1,f2,t1,t2,p);离散函数的卷积subplot(2,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论