


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机仿真技术复习总结y=zeros( m,n)两个作用:为矩阵 y赋初值为矩阵y分配mx n的存储空间 sum(x):矩阵各列元素的和几个取整函数的区别:rou nd4舍5入到整数fix向最接近0取整floor向最接近-x取整ceil向最接近+x取整exp自然指数log自然对数log10以10为底的对数数组寻址:1 通过对数组下标的访问来实现数组寻址>> A=1:6A =123456访问单个元素时,直接采用访问下标的方法。>> A(4)ans =4一次访问一块数据(即访问数组中的连续元素),可以使用冒号。>> A(2:6)ans =23456访问多个不连续
2、的元素,可以使用中括号。>> A(1 3 4 6)ans =1346end参数用来表示数组的结尾。>> A(3:e nd)ans =3456图形对象属性:包括属性名与属性值用get函数获取属性值用set函数设置属性值2.1矩阵和数组的概念标量(Scalar):是指1x 1的矩阵,即只含一个数的矩阵。向量(Vector):是指1 x n或nx 1的矩阵,即只有一行或者一列的矩阵。矩阵(Matrix ):是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,Ox 0矩阵为空矩阵()。数组(Array ):是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。复数
3、由实部和虚部组成,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=a ngle (z)%计算相角1. 变量的命名规则 区分字母的大小写。例如,“ a和“ A是不同的变量。不能超过63个字符,第63个字符后的字符被忽略。“6ABC、必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。等)。例如,“ AB%C都是不合法的变
4、量名。关键字(如if、while等)不能作为变量名。1. 通过显式元素列表输入矩阵例如:>> c=1 2;3 4;5 3*2% 表示构成矩阵,分号分隔行,空格分隔元素2通过语句生成矩阵使用from:step:to方式生成向量from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1。使用“from:step:to方式生成以下矩阵。x1=2:5x1 =2345x2=5:-1:2x2 =5432x3=2:-1:3%空矩阵x3 =Empty matrix: 1-by-0X4=2:-1:0.5X4 =21x5=1:2:5;1:3:7%两行向量构成矩阵x5 =
5、1351 47(2) 使用 linspace 禾口 logspace 函数lin space(a,b ,n)a、b、n分别表示开始值、结束值和元素个数,n如果省略则默认值为 100。logspace(a,b ,n)a、b、n分别表示开始值10a、结束值10b和数据个数,n,如果省略则默认值为50。3.由矩阵生成函数产生特殊矩阵zeros(m,n)产生 mx n的全0矩阵ones(m,n)产生 mx n的全1矩阵rand(m,n)产生均匀分布的随机矩阵,元素取值范围0.01.0。randn(m,n)产生正态分布的随机矩阵magic(N)产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等)eye
6、(m,n)产生 mx n的单位矩阵zeros、ones、rand、randn和eye函数当只有一个参数n时,则为n Xn的方阵;当eye(m,n)函数的m和n参数不相等时则单位矩阵会出现全0行或列。矩阵元素1. 矩阵的下标(Subscript)(1) 全下标方式一个mx n的a矩阵的第i行第j列的元素表示为a(i,j)。(2) 单下标方式以mx n的矩阵a为例,若元素a(i,j)则对应的“单下标”为s= (j-1) x m+ i。2. 子矩阵块的产生子矩阵是从对应矩阵中取出一部分元素构成,用全下标和单下标方式取子矩阵。(1) 用全下标方式取行数为1、3,列数为2、3的元素构成子矩阵。a(1 3
7、,2 3)ans =2 069取行数为13,列数为23的元素构成子矩阵,“1: 3”表示1、2、3行下标。a(1:3,2:3)ans =204069用单下标方式取单下标为1、3、2、6的元素构成子矩阵。a(1 3;2 6)ans =153 63. 矩阵的赋值矩阵的赋值有:全下标方式、单下标方式和全元素方式。4. 矩阵元素的删除可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作,就是简单地将其赋值为空矩阵(用表示)。EX:a(:,3)=%删除一列元素a(1)=%删除一个元素,矩阵变为向量a=%删除所有元素为空矩阵5. 生成大矩阵(Concatenating Matrices)可以通
8、过方括号“'实现将小矩阵生成一个较大的矩阵。例: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 :用来计算字
9、符串的长度。double :用来查看字符串的ASCII码储存内容。char:用来将ASCII码转换成字符串形式。class或ischar :用来判断某一个变量是否为字符串。3. 使用一个变量来储存多个字符串(1) 多个字符串组成一个新的行向量将多个字符串变量直接用“,连接,构成一个行向量,就可以得到一个新字符串变量。(2) 使用二维字符数组将每个字符串放在一行,多个字符串可以构成一个二维字符数组,但必须先在短字符串结尾补上空格符,以确保每个字符串(即每一行)的长度一样。否则会提示出错:(3) 使用 str2mat、strvcat 和 char 函数使用专门的str2mat、strvcat和ch
10、ar函数可以构造出字符串矩阵,而不必考虑每行的字符数是否相等,总是按最长的设置,不 足的末尾用空格补齐。例如:>> 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=e
11、ig(X)计算矩阵特征值和特征向量。如果方程Xv=vd存在非零解,则 v为特征向量,d为特征值。(1) 矩阵和数组的加(addition)、减运算(subtraction)矩阵加、减运算表达式分别为"A+B ”、“ A-B ”。矩阵和数组的乘法运算(muliplication)矩阵的乘法运算表达式为A*B ”。矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。数组的乘法运算表达式为“ A.*B ” ,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。(3) 矩阵和数组的除法矩阵除法可以用来方便地解线性方程组:AX=BX=ABA*X=BX= in v(
12、A)*B=AB矩阵运算符为“”和“/分别表示左除和右除。AB=A-1*BA/B=A*B-1。其中:A-1是矩阵的逆,也可用inv(A)求逆矩阵。数组的除法运算表达式“ AB”和“ A./B,”分别为数组的左除和右除,表示数组相应元素相除。A和B数组必须大小相同,除非其中有一个是标量。件! _x2 亠3x3 =53xx2 _5x3 =5【例2.12】已知方程组 4x1 X2 x3 =9,用矩阵除法来解线性方程组。解:将该方程变换成 其中:AX=B的形式。_2一1331-5B =5L4_11 一9A =A=2 -1 3;3 1 -5;4 -1 1;B=5;5;9;X=AB ;X =2-10在线性方
13、程组 A*X=B中,mxn阶矩阵A的行数m表示方程数,列数 n表示未知数的个数。 n=m , A 为方阵,AB = inv(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左除,in v(A)* BA./B右除,A的兀素被B的对应兀 素除A/B右除,A* inv(B)学习好资料欢迎下载x1.x2%数组左除(x2被x1除)x1./x2%数组右除(x1被x2除)数组或矩阵的对应元素相
14、除(4)矩阵和数组的乘方矩阵乘方的运算表达式为“AAB其中A可以是矩阵或标量。当A为矩阵,必须为方阵:B为正整数时,表示 A矩阵自乘B次;B为负整数时,表示先将矩阵A求逆,再自乘|B|次,仅对非奇异阵成立;B为矩阵时不能运算,会出错;B为非整数时,将 A分解成A=W*D/W ,D为对角阵,则有 AAB=W*DAB/W。当A为标量:B为矩阵时,将 A分解成 A=W*D/W,D为对角阵,则有 AAB=W*diag(D.AB)/W 。数组乘方的运算表达式“ A.AB ”当A为矩阵,B为标量时,则将 A(i,j)自乘B次;当A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)
15、次;当A为标量,B为矩阵时,将 AA B(i,j)构成新矩阵的第i行第j列元素。5.关系操作和逻辑操作关系运算:关系操作符有:、=、=、=(等于卜=(不等于)。关系运算规则:如果两个标量,则结果为真(1)或假(0)。如果比较的两个数组变量,则必须大小相同,数组的元素为0或1。如果比较一个数组和一个标量,则把数组的每个元素分别与标量比较。、=和 、=仅对变量的实部进行比较,而=和=则同时对实部和虚部进行比较。逻辑操作符有:&(and)、|(or)、(not)和xor、&&(先决与)、| (先决或)。在MATLAB中各种运算符的优先级如下:'(矩阵转置)、A(矩阵幕
16、)和.'(数组转置)、A(数组幕)(逻辑非)*(乘)、/(左除)、(右除)和.*(点乘卜./(点左除)、.(点右除) -(加减):(冒号)逻辑运算规则:在逻辑运算中,关系运算和逻辑运算: b=0 1;1 0b =0110 fin d(b)ans = 23 a=1,2,3,4,5a = 12 b=ab = 12 b(a=3)=1b = 12、=、=、&(逻辑与)非 0元素表示真(1),|(逻辑或)&&(先决与)|(先决或),0元素表示假(0),逻辑运算的结果为0或11由于 MATLAB以0和注:关系和逻辑运算很重要。能对函数值进行分段处理,即不需条件判断就能求分段
17、函数的值。(3)函数运算 关系逻辑函数1表示关系运算和逻辑运算的结果,所以巧妙利用关系运算和逻辑运算+、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,是则为1 isnumeric(A)判断数组A的元素是否全为数值型数组isreal(A)判断数组A的元素是否
18、全为实数,是则为 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)=a nxn+an-1x n- 1 + +a1x
19、+a0用行向量表示为:p=a n an -1 a1 a0即把多项式的各项系数按降幕次序排放成行向量,如果多项式中缺某幕次项,则用零代替该幕次项的系数。例如:x3+21x2+20x>> p仁1 21 20 01. 多项式求值函数polyval(p,s)可以用来计算多项式在给定变量时的值。P为多项式,s为给定值2. 多项式求根Roots :用来计算多项式的根。Poly :根据多项式的根来计算多项式的系数。3. 特征多项式函数poly计算矩阵的特征多项式的系数。特征值用roots函数来计算。4. 部分分式展开用residue函数来实现将分式表达式进行多项式的部分分式展开。r,p,k=re
20、sidue(b,a)b,a=residue(r,p,k)1. 多项式的乘法和除法多项式的乘法和除法运算分别使用函数conv和deconv来实现,这两个函数也可以对应于卷积和解卷运算。p=c on v(pl,p2)q,r = dec on v(v,u)多维数组:reshape函数:在总元素的数目不变的前提下重新确定数组的行列数来重组数组(P55)reshape(p行歹V 页)说明:第一个变量是待重组的数组p,后面的变量是重新生成数组的行数、列数、页数。>> a=1,2,3;4,5,6a =1234 56>> b=reshape(a,1,6)注:此处是按单下标的方式重组数组
21、2. 多项式的微分和积分多项式的微分由polyder函数实现。可以用p./length(p):-1:1,k的方法来完成积分,k为常数。第三章符号计算是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。与数值运算的区别:探 数值运算中必须先对变量赋值,然后才能参与运算。探 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。3.1符号表达式的建立创建符号常量符号常量是不含变量的符号表达式。sym(常量)%创建符号常量sym(常量,参数)%按某种格式转换为符号常量 说明:参数可以选择为d'、f、e'或r '四种格式,也可省略。EX: >>
22、;a=sym('si n(2)')>> a=sym(si n( 2),'r')创建符号变量和表达式1. 使用sym命令创建符号变量和表达式sym(变量,参数)%把变量定义为符号对象2使用syms命令创建符号变量和符号表达式syms( arg1', arg2',,参数)syms arg1 arg2 ,参数例如:>> f1=sym( a*x2+b*x+c 创建表达式>> syms a b c x%仓U建变量>> f2=a*xA2+b*x+c% 创建表达式>> syms('a'
23、,'b','c','x')>> f3=a*xA2+b*x+c符号表达式()中的参数一定要用单引号括起来。符号矩阵例如,使用sym命令创建的符号矩阵:>> A=sym('a,b;c,d')例如,使用syms命令创建相同的符号矩阵:>> syms a b c d>> A=a b;c d符号表达式的代数运算1. 符号运算中的运算符基本运算符运算符“ + ”,“” , “ * ”,“”,“/”,“ A ”分别实现符号矩阵的加、减、乘、左除、右除、求幕运算。运算符“ .* ”,“./ ” “”
24、,“ A '分别实现符号数组的乘、除、求幕,即数组间元素与元素的运算。运算符“,” “.分别实现符号矩阵的共轭转置、非共轭转置。(2) 关系运算符运算符“ =”、“ =”分别对运算符两边的符号对象进行“相等”、“不等”的比较。在Symbolic Math Toolbox中有三种不同的算术运算:数值型:MATLAB的浮点运算。有理数型:Maple的精确符号运算。VPA型:Maple的任意精度运算。任意精度的VPA型运算可以使用digits和vpa命令来实现。digits(n) %设定默认的精度S=vpa(s,n) %将s表示为n位有效位数的符号对象自由变量的确定原则:符号表达式“=ax2
25、+bx+c ”中只有一个变量是独立变量:小写字母i和j不能作为自由变量。x,则选择在字母符号表达式中如果有多个符号变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有顺序中最接近x的字符变量;如果与 x相同距离,则在x后面的优先。大写字母比所有的小写字母都靠后。也可以用findsym函数来自动确定。333符号表达式的替换(Substitutions)subs函数:对符号表达式中符号变量的替换。subs(s)%用给定值替换符号表达式s中的所有变量subs(s,new)%用new替换符号表达式 s中的自由变量subs(s,old,new)%用new替换符号表达式 s中的old变量例:
26、>> f=sym('xA3-6*xA2+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) %
27、对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可以求得
28、符号表达式的积分,即找出一个符号表达式F使得diff(F)=f,也可以说是求微分的逆运算。int(f, 't')%求符号变量t的不定积分int(f, ),a,b)%求符号变量t的定积分int(f, ),'m',)')%求符号变量t的定积分符号级数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
29、为自变量,F为符号表达式;对 F进行泰勒级数展开至n项,参数n省略则默认展开前5项。基本绘图命令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)命令是在坐标系中顺序地用直线段连接各点,生成一条折线,当向量的元素充分多时,可以得到一条光滑的曲线
30、。2. plot(x,y)绘制向量x和y的曲线当参数x和y都是长度为n的向量,x、y的长度必须相等,plot(x,y)命令绘制纵坐标为向量y横坐标为向量x的曲线。【例4.2】绘制正弦曲线y=sin(x)和方波曲线,如图4.2所示。%y1为x1的正弦函数>> x1=0:0.1:2*pi;>> y1=si n( 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-2
31、1.指定图形窗口Figure No.1 '窗口中绘制的,当第二次使用plot命令时,就将第在小节中介绍的plot命令,绘制的图形都是在默认的一次绘制的图形覆盖了。因此,如果需要多个图形窗口同时打开时,可以使用 语法:figure( n)%产生新图形窗口说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“ 例如,可以使用"figure (1)、"“figure等语句来同时打开多个图形窗口。2. 同一窗口多个子图 如果需要在同一个图形窗口中布置几幅独立的子图,可以在 每个区域一幅子图。语法:subplot(m,n,k) %使(mXn)幅子图中的第k
32、幅成为当前图 【例4.6】用subplot命令画四个子图,如图4.6所示。>> x=0:0.1:2*pi;>> subplot(2,2,1)>> plot(x,si n( x)>> subplot(2,2,2)>> plot(x,cos(x)>> subplot(2,2,3)>> plot(x,si n(3*x)>> subplot(224)>> plot(x,cos(3*x)3. 同一窗口多次叠绘在当前坐标系中绘图时,每调用一次plot函数,会擦掉图形窗口中已有的图形。以用“ hold
33、 ”命令来保留原图形对象。语法:%分割为2*2个子图,左上方为当前图%右上方为当前图%左下方为当前图%右下方为当前图,省略逗号figure 语句。Figure No.n ”而不关闭其它窗口。plot命令前加上subplot命令来将一个图形窗口划分为多个区域,为了在一个坐标系中增加新的图形对象,可hold on %使当前坐标系和图形保留hold off%使当前坐标系和图形不保留hold%在以上两个命令中切换说明:在设置了“ hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。【例4.7】在同一窗口画出函
34、数sinx在区间0 2冗的曲线和cosx在区间-n的曲线,如图4.7(a)所示。>> x1=0:0.1:2*pi;>> plot(x1,s in (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)所示。>&
35、gt; plotyy(x1,si n(x1),x2,cos(x2)4.2设置坐标轴和文字标注2. 分格线和坐标框(1) 使用grid命令显示分格线语法:grid on%显示分格线grid off%不显示分格线grid%在以上两个命令间切换说明:不显示分格线是MATLAB 的默认设置。分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。(2) 使用box命令显示坐标框语法:box on%使当前坐标框呈圭寸闭形式box off%使当前坐标框呈开启形式box%在以上两个命令间切换3. 文字标注图形的文字标注是指在图形中添加标识性的注释,文字标注包括:图名(Title)、坐标轴名(
36、Label)、文字注释(Text)和图例(Legend)。(1) 添加图名语法:title(s)%书写图名说明:s为图名,为字符串,可以是英文或中文。(2) 添加坐标轴名语法:xlabel(s) %横坐标轴名ylabel(s) %纵坐标轴名(3) 添加图例语法:lege nd(s,pos) %在指定位置建立图例lege nd off %擦除当前图中的图例说明:参数s是图例中的文字注释,如果多个注释则可以用 s1' , ' s的方式;参数pos是图例在图上位置的指定符,它的取 值如表4.4所示。01234-1自动取最佳 位置右上角(默认)左上角左下角右下角图右侧(4) 添加文字注
37、释语法:text(xt,yt,s) %在图形的(xt,yt)坐标处书写文字注释【例4.10】在图形窗口中添加文字注释,如图4.10所示。>> x=0:0.1:2*pi;>> plot(x,si n( x)>> hold on>> plot(x,cos(x),'ro')>> title('y1=si n(x),y2=cos(x)')%添加标题>> xlabel('x')%添加横坐标名>> legend( sin(x)' , cos(%在右下角添加图例学习好资
38、料欢迎下载>> text(pi,sin(pi),'x=pi')%在 pi,sin(pi)处添加文字注释绘制三维线图命令三维曲面图的绘制:MATLAB绘制网线图和曲面图的函数分别是mesh()和surf(),其具体操作步骤是:用函数meshgrid()生成平面栅格点矩阵X,Y;由X,Y计算函数数值矩阵 Z ;用mesh()绘制网线图,用surf()绘制曲面图1. meshgrid 命令为了绘制三维立体图形,MATLAB的方法是将x方向划分为 m份,将y方向划分为n份,meshgrid命令是以x、y向量为基准,来产生在x-y平面的各栅格点坐标值的矩阵。语法:X,Y =
39、meshgrid(x,y)说明:X、Y是栅格点的坐标,为矩阵;x、y为向量。例如,将x(1 x m)向量和y(1 x n)向量转换为(n x m)的矩阵: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;
40、>> plot3(x,si n(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,乙c)【例4.14续】用surf查看peaks函数的三维曲面图,如图4.16所>> surf (xx,yy,zz)4. 其它立体网线图和曲面图立体网线图mesh命令还有几种格式,meshc命令为立体网状图加等高线;meshz为立体网
41、状图加"围裙”。【例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以文件名为准;H1行通常包含大写的函数文件名,可以提供给help和lookfor关键词查询使用;(
42、3) 在线帮助文本通常包含函数输入输出变量的含义、格式说明;学习好资料欢迎下载(4) 编写和修改记录一般在空一行后,记录作者、日期和版本记录,用于软件档案管理。函数体由实现 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说明:表达式可以是向量也可以是矩阵,如果为矩阵则当所
43、有的元素都为真才执行循环体,如果表达式为nan, MATLAB认为是假,不执行循环体。例如:While n>0end5.2.3 Ifelseend条件转移结构if条件式1语句段1elseif条件式2语句段2else语句段n+1end说明:Ifelseend结构也可以是没有 elseif和else的简单结构。5.2.4 switchcase开关结构switch开关表达式case表达式1语句段1case表达式2语句段2otherwise语句段nend说明:(1) 如果表达式1不满足,则与下一个表达式2比较,如果都不满足则执行otherwise后面的语句段n。(2) 开关表达式只能是标量或字符
44、串。(3) case后面的表达式可以是标量、字符串或元胞数组,如果是元胞数组则将开关表达式与元胞数组的所有元素进行比较。1.子函数(Subfunctions)在M函数文件中只有一个主函数,其它则为子函数。(1)在一个M文件中,主函数必须出现在最上方,其后是子函数,子函数的次序无任何限制; 子函数不能被其它文件的函数调用,只能被同一文件中的函数(可以是主函数或子函数)调用; 同一文件的主函数和子函数变量的工作空间相互独立;学习好资料欢迎下载用help和lookfor命令不能提供子函数的帮助信息。function Ex0511()% 主函数z1=0.3;Ex0502(z1);%调用 Ex0502h
45、old onz仁 0.5Ex0502(z1)%调用 Ex0502z仁0.707;Ex0502(z1)%调用 Ex0502fun ctio n y=Ex0502(zeta)%子函数,画二阶系统时域曲线x=0:0.1:20;y=1-1/sqrt(1-zetaA2)*exp(-zeta*x).*si n( sqrt(1- zetaA2)*x+acos(zeta)plot(x,y)2. 私有函数(Private Functions )私有函数是指存放在 private子目录中的M函数文件,具有以下性质:(1) 在private目录下的私有函数,只能被其父目录的M函数文件所调用,而不能被其它目录的函数调
46、用;(2) 私有函数父目录的M脚本文件也不可调用私有函数;(3) 在函数调用搜索时,私有函数优先于其它MATLAB路径上的函数。3. 调用函数的搜索顺序在MATLAB中调用一个函数,搜索的顺序如下:查找是否子函数;查找是否私有函数;从当前路径中搜索此函数;从搜索路径中搜索此函数。函数调用的格式:输出参数1,输出参数2, =函数名(输入参数1,输入参数2,)1. 参数传递规则函数内变量与外界(包括其它函数和工作空间)的唯一联系就是通过函数的输入输出参数。输入参数在函数中的任何变化,都 仅在函数内进行,不会传递回去。【例5.13】将【例5.11】画二阶系统时域的函数修改,使用输入输出参数来实现参数
47、传递。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-zetaA2)*exp(-zeta*x).*sin.(sqrt(1-zetaA2)*x+acos(zeta);程序分析:主函数 Ex0513调用子函数 Ex0502,子函数中的zeta为输入参数,函数调用时将z1传递给子函数zeta,子
48、函数计算后将输出参数x和y传回给主函数的x1、y1。2. 函数参数的个数(1) nargin 禾口 nargout 变量学习好资料欢迎下载.函数的输入输出参数的个数可以通过变量nargin和nargout获得。nargin用于获得输入参数的个数,nargout用于获得输出参数的个数。(2) varargin 禾口 varargout 变量varargin"和Varargout"可以获得输入输出变量的各元素内容,varargin和varargout都是元胞数组。【例9.5】单位冲激序列和单位阶跃序列n=-5:5;y仁zeros(1,le ngth( n);y1( n=0)=1
49、;y2=zeros(1,le ngth( 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.A n;stem( n,y,'r*')axis(-5,5,0,50)xlabel(' n');ylabel('x n')
50、;【例9.9】编写卷积积分的计算函数fun ctio n f,t=ctsco nv(f1,f2,t1,t2,Ts)%计算连续时间信号的卷积积分:f=f1*f2%f1、f2 :输入信号的样值向量%t1、t2:输入信号的时间向量%Ts :采样间隔%t1、t2的采样间隔必须等于Ts%f=conv(f1,f2);%计算序列fl与f2的卷积和ff=f*Ts;%计算卷积积分信号f(t)离散样值t0=t1(1)+t2(1) ;%计算序列f非零样值的起点位置l=length(t1)+length(t2)-2; %计算卷积积分f的非零样值的宽度t=tO:Ts:(tO+l*Ts)%确定卷积积分f非零样值的时间向量
51、连续函数的卷积【例 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=on es(size(t1);t2=1:p:3;f2=o nes(size(t2);f,t=ctsco nv(f1,f2,t1,t2,p);离散函数的卷积subplot(2,2,1)plot(t1,f1)title('x(t)')xlabel('tl')subplot(2,2,2)plot(t2,f2)title('h(t)')xlabel('t2')subplot(2,2,3)plot(t,f);p=get(gca,'positio n');p(3)=2.5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅馆业数字化转型与智能化技术应用考核试卷
- 建筑工程法律法规深度剖析考核试卷
- (完整版)协商一致解除(或终止)劳动合同协议书
- 体育经纪人与运动员职业风险管理考核试卷
- 旅游业投诉处理培训课件
- 西安房子购买合同范本
- 金融产品推广及销售服务合同
- 电脑系统技术服务合同
- 养猪产业作业指导书
- 公司信息化建设方案设计书
- 2025年广东生态工程职业学院单招职业适应性测试题库完美版
- 模具转移合同协议书
- DeepSeek学习科普专题
- 2025四川省小金县事业单位招聘362人历年高频重点模拟试卷提升(共500题附带答案详解)
- 2022泛海三江消防ZX900液晶手动控制盘使用手册
- 学校2025年春季学期学校安全工作计划+行事历
- 广西壮族自治区柳州市2025年中考物理模拟考试卷三套附答案
- 2024中国糖果、巧克力制造市场前景及投资研究报告
- 第11课《山地回忆》说课稿 2024-2025学年统编版语文七年级下册
- 罗森运营部经营管理手册
- 2023年H3CNE题库附答案
评论
0/150
提交评论