资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机仿真技术复习总结y=zeros(m,n) 两个作用:为矩阵y 赋初值为矩阵y 分配 mn 的存储空间sum(x):矩阵各列元素的和几个取整函数的区别:round 4 舍 5 入到整数fix 向最接近0 取整floor 向最接近 -取整ceil 向最接近 + 取整exp 自然指数log 自然对数log10 以 10 为底的对数数组寻址:1通过对数组下标的访问来实现数组寻址 A=1:6 A =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 6 end 参数用来表示数组的结尾。 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*j z=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 ” 都是不合法的变量名。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 16 页关键字 (如 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:5 x1 =2 3 4 5 x2=5:-1:2 x2 =5 4 3 2 x3=2:-1:3 %空矩阵x3 =Empty matrix: 1-by-0 X4=2:-1:0.5 X4 =2 1 x5=1:2:5;1:3:7 %两行向量构成矩阵x5 = 1 3 5 1 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.0 1.0。randn(m,n) 产生正态分布的随机矩阵magic(N) 产生 N 阶魔方矩阵 (矩阵的行、列和对角线上元素的和相等) eye(m,n) 产生 mn 的单位矩阵zeros、 ones、rand、randn 和 eye函数当只有一个参数n 时,则为n n 的方阵 ; 当 eye(m,n)函数的 m 和 n 参数不相等时则单位矩阵会出现全0 行或列。2.2.2 矩阵元素1. 矩阵的下标 (Subscript) (1) 全下标方式一个 m n 的 a 矩阵的第i 行第 j 列的元素表示为a(i,j)。(2) 单下标方式以 mn 的矩阵 a为例,若元素a(i,j)则对应的“单下标”为s= (j-1) m i。2. 子矩阵块的产生子矩阵是从对应矩阵中取出一部分元素构成,用全下标和单下标方式取子矩阵。(1) 用全下标方式取行数为1、3,列数为2、3 的元素构成子矩阵。a(1 3,2 3) ans = 2 0 6 9 取行数为13,列数为23 的元素构成子矩阵, “1:3”表示 1、2、3 行下标。a(1:3,2:3) ans = 2 0 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 16 页4 0 6 9 (2) 用单下标方式取单下标为1、3、2、6 的元素构成子矩阵。a(1 3;2 6) ans = 1 5 3 6 3. 矩阵的赋值矩阵的赋值有:全下标方式、单下标方式和全元素方式。4. 矩阵元素的删除可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作,就是简单地将其赋值为空矩阵(用表示 )。EX: a(:,3)= %删除一列元素a(1)= %删除一个元素,矩阵变为向量a= %删除所有元素为空矩阵5. 生成大矩阵 (Concatenating Matrices) 可以通过方括号“ ”实现将小矩阵生成一个较大的矩阵。例: a;a 与a,a的区别6. 常用矩阵翻转函数:flipud(X) 使矩阵 X 沿水平轴上下翻转fliplr(X) 使矩阵 X 沿垂直轴左右翻转rot90(X) 使矩阵 X 逆时针旋转900 2.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) :计算方阵行列式精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 16 页rank(X) :求矩阵的秩,得出的行列式不为零的最大方阵边长。inv(X) :求矩阵的逆阵。inv(X)=X-1 v,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=AB A*X=B X= inv(A)*B=AB 矩阵运算符为 “” 和“/ ”分别表示左除和右除。AB=A-1*B A/B=A*B-1 。其中: A-1 是矩阵的逆,也可用inv(A) 求逆矩阵。数组的除法运算表达式“ A. B” 和“ A./B ”,分别为数组的左除和右除,表示数组相应元素相除。A 和 B 数组必须大小相同,除非其中有一个是标量。【例 2.12】已知方程组9xx4x55xx3x53xx2x321321321,用矩阵除法来解线性方程组。解:将该方程变换成AX=B 的形式。其中:114513312A,955BA=2 -1 3;3 1 -5;4 -1 1 ;B=5;5;9 ;X=AB ;X =2 -1 0 在线性方程组A*X=B中, m n 阶矩阵 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 左除, inv(A)* B A./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|次,仅对非奇异阵成立;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 16 页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 0 b = 0 1 1 0 find(b) ans = 2 3 a=1,2,3,4,5 a = 1 2 3 4 5 b=a b = 1 2 3 4 5 b(a=3)=1 b = 1 2 1 1 1 注:关系和逻辑运算很重要。由于MATLAB以 0 和 1 表示关系运算和逻辑运算的结果,所以巧妙利用关系运算和逻辑运算能对函数值进行分段处理,即不需条件判断就能求分段函数的值。(3) 函数运算关系逻辑函数all(A) 判断 A 的列向量元素是否全非0,全非 0 则为 1 any(A)判断 A 的列向量元素中是否有非0 元素,有则为1 isequal(A,B) 判断 A、B 对应元素是否全相等,相等为1 isempty(A) 判断 A 是否为空矩阵,为空则为1,否则为0 isfinite(A) 判断 A 的各元素值是否有限,是则为1 isinf(A) 判断 A 的各元素值是否无穷大,是则为1 isnan(A) 判断 A 的各元素值是否为NAN ,是则为1 isnumeric(A) 判断数组A 的元素是否全为数值型数组isreal(A) 判断数组 A 的元素是否全为实数,是则为1 isprime(A) 判断 A 的各元素值是否为质数,是则为1 isspace(A) 判断 A 的各元素值是否为空格,是则为1 find(A) 寻找 A 数组非 0 元素的下标和值2.2、多维数组的创建(1) 通过“全下标”元素赋值方式创建(2) 由函数 ones、zeros、rand 和 randn 直接创建精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 16 页(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 0 1. 多项式求值函数 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,6 a = 1 2 3 4 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) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 16 页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 d 3.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)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 16 页可以用来计算多项式的值,以及化简。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) %右趋近于0 3.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-2 1. 指定图形窗口在 4.1.1 小节中介绍的plot 命令,绘制的图形都是在默认的“Figure No.1 ” 窗口中绘制的,当第二次使用plot 命令时,就将第一次绘制的图形覆盖了。因此,如果需要多个图形窗口同时打开时,可以使用figure 语句。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 16 页语法:figure(n) %产生新图形窗口说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n ”,而不关闭其它窗口。例如,可以使用“figure (1)”、“figure (2)”等语句来同时打开多个图形窗口。2. 同一窗口多个子图如果需要在同一个图形窗口中布置几幅独立的子图,可以在plot 命令前加上subplot 命令来将一个图形窗口划分为多个区域,每个区域一幅子图。语法:subplot(m,n,k) %使(m n)幅子图中的第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 %使当前坐标框呈封闭形式精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 16 页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 所示。0 1 2 3 4 1 自 动 取 最 佳位置右 上 角 ( 默认) 左上角左下角右下角图右侧(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,Y meshgrid(x,y) 说明: X、Y 是栅格点的坐标,为矩阵;x、y 为向量。例如,将x(1 m)向量和 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) %绘制三维曲线精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 16 页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 脚本文件没有;函数名和文件名一致,当不一致时, MA TLAB 以文件名为准;(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,MA TLAB 认为是假,不执行循环体。例如:While n0 end 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 16 页5.2.3 If elseend条件转移结构if 条件式 1 语句段 1 elseif 条件式 2 语句段 2 . else 语句段 n+1 end 说明: If elseend结构也可以是没有elseif 和 else的简单结构。5.2.4 switchcase开关结构switch 开关表达式case 表达式 1 语句段 1 case表达式 2 语句段 2 . otherwise 语句段 n end 说明:(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); %调用 Ex0502 hold on z1=0.5 Ex0502(z1) %调用 Ex0502 z1=0.707; Ex0502(z1) %调用 Ex0502 function 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 中调用一个函数,搜索的顺序如下:查找是否子函数;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 16 页查找是否私有函数;从当前路径中搜索此函数;从搜索路径中搜索此函数。函数调用的格式:输出参数1,输出参数2, =函数名 (输入参数 1,输入参数2,) 1. 参数传递规则函数内变量与外界(包括其它函数和工作空间)的唯一联系就是通过函数的输入输出参数。输入参数在函数中的任何变化,都仅在函数内进行,不会传递回去。【例 5.13】将【例 5.11】画二阶系统时域的函数修改,使用输入输出参数来实现参数传递。function Ex0513() % EX0513 参数传递绘制二阶系统时域响应z1=0.3; x1,y1=Ex0502(z1); plot(x1,y1) hold on z1=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:输入信号的时间向量精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 16 页%Ts:采样间隔%t1、t2 的采样间隔必须等于Ts %- f=conv(f1,f2); %计算序列f1 与 f2 的卷积和 f f=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,2,1) plot(t1,f1) title(x(t) xlabel(t1) subplot(2,2,2) plot(t2,f2) title(h(t) xlabel(t2) subplot(2,2,3) plot(t,f); p=get(gca,position); p(3)=2.5*p(3); % p(3)代表坐标轴的宽度(width) set(gca,position,p) %将第三个子图的横坐标范围扩为原来的2.5 倍title(y(t)=x(t)*h(t) xlabel(t) 【例 9.13】符号运算求解积分的方法求解傅里叶级数系数function an,bn=fs(x,t,T,K) %求解周期信号的傅里叶级数系数%x:周期信号在【-T/2,T/2】内的符号表达式%t:符号表达式中的自变量%T:周期信号的周期%K:傅里叶级数分解的谐波次数%- syms n; an = zeros(K+1,1); bn = zeros(K+1,1); A0 =int(x,t,-T/2,T/2)/T; An=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T; Bn=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T; an(1) = double(A0); for k=1:K an(k+1)=double(subs(An,n,k); bn(k+1)=double(subs(Bn,n,k); end 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 16 页【例 9.28】用双线性变换法设计一个巴特沃斯低通IIR 数字滤波器。设计指标参数为:在通带内频率低于0.2时,最大衰减小于 1dB,在阻带0.3,频率区间上,最小衰减大于15dB。画出数字滤波器在频率区间0,0.5上的幅频响应特性曲线。clear,close all; Wp=0.2*pi;Ws=0.3*pi;Rp=1;Rs=15; T=2;Fs=1/T; wp=2*tan(Wp/2)/T;ws=2*tan(Ws/2)/T; %预畸变N,wc=buttord(wp,ws,Rp,Rs,s); %计算过渡模拟滤波器阶数N 和 3dB 截止频率B,A=butter(N,wc,s); %计算模拟滤波器系统函数Bz,Az=bilinear(B,A,Fs); %用双线性变换法将模拟滤波器转换为数字滤波器w=linspace(0,pi,1024); %将 0 到 之间均分 1024 个频率采样点h=freqz(Bz,Az,w); %计算数字滤波器的复频响h,频率点由向量w 指定plot(w/pi,20*log10(abs(h),k);grid on; set(gca,ytick,-15,-1,0); %在衰减 1dB 和 15dB 处标明纵坐标set(gca,xtick,0,0.2,0.3,0.5); %在通带和阻带截止频率处标明横坐标axis(0,0.5,-50,0); xlabel( / );ylabel(幅度 (dB); 实验一、 (4) 利用矩阵的基本运算求解矩阵方程。已知矩阵 A 和 B 满足关系式16A BAABA, 其中 A=1 30001 40001 7,计算矩阵B。(演算出来 ) a=1/3 0 0;0 1/4 0;0 0 1/7 eye(3) c=a-eye(3) b=c(6*e) (5)计算函数221( )10sin(4 )1tf tetz的值,其中 t 的范围为02 ,步长取 0.1 ;z 为 0.707;1( )f t为( )f t=0 的部分,计算1( )ft的值。t=0:0.1*pi:2*pi; z=0.707; f=10*sqrt(1-z2)*exp(-2*t).*sin(4*t) y=(f=0); f1=f.*y (6) 两个多项式为432( )54321a xxxxx,2( )31b xx, 计算( )( )( )c xa xb x,并计算( )c x的根;当2x时,计算( )c x的值;计算x 在0,20 内多项式( )c x的值;将( )/( )b xa x进行部分分式展开a=5 4 3 2 1; b=3 0 1; c=conv(a,b) roots(c) polyval(c,2) x=0:1:20 c=polyval(c,x) r,p,k=residue(b,a) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 16 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 16 页
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号