《第二章基本语法精选PPT.ppt》由会员分享,可在线阅读,更多相关《第二章基本语法精选PPT.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章基本语法第1页,本讲稿共93页第2章 基本语法n2.1 变量及其赋值n2.2 矩阵的初等运算n2.3 元素群运算n2.4 逻辑判断及流程控制n2.5 基本绘图方法n2.6 M文件及程序调试第2页,本讲稿共93页2.1 变量及其赋值n2.1.1 标识符与数 标识符是标识变量名、常量名、函数名、文件名的字符串的总称。1、标识符由字母、数字、下划线组成,第1个字符必须是字母。2、长度不超过31个。3、区分大小写。4、变量中不能含有标点符号。5、变量可直接参与计算。6、变量一般无需事先定义 Rgb_3Rgb-3k4t54Ok1.356plp第3页,本讲稿共93页2.1.1 标识符与数7、特殊变量
2、无需定义特殊变量取值ans用于结果的缺省变量名pi圆周率eps浮点数相对精度length一维矩阵的长度inf无穷大 如1/0NaN非数字 如0/0i j虚数单位nargin函数的输入变量数nargout函数的输出变量数realmin最小浮点实数realmax最大浮点实数第4页,本讲稿共93页2.1.1 标识符与数8、数值显示格式nMATLAB中所有的量为双字长浮点数,显示按下面显示规则:1.在缺省情况下,当结果为整数,作为整数显示;当结果为实数,以小数后4位的精度近似显示。2.如果结果中的有效数字超出了这一范围,以科学计数法显示结果。3.format命令改变显示格式,常用的的格式有nlong(
3、16位)bank(2个十进制位)hex(十六进制)nshort(缺省)short e(5位加指数)+(符号)n long e(16位加指数)rat(有理数近似)第5页,本讲稿共93页2.1.2 矩阵及其元素的赋值n矩阵获取格式:变量=表达式(或数)1、直接输入:A=123;456;7,8,9 *矩阵用中括号括起。矩阵用中括号括起。*元素间用空格隔开,或用逗号隔开。元素间用空格隔开,或用逗号隔开。*每行用分号;号表示回车。每行用分号;号表示回车。2、行向量B=123453、列向量C=1;2;3;4;5;每行命令后面的分号;表示结果不显示每行命令后面的分号;表示结果不显示。第6页,本讲稿共93页2
4、.1.2 矩阵及其元素的赋值4、元素可用表达式表示 D=-1.3sqrt(3)(1+2+3)/5+15、用语句生成行向量E=from:step:to即E=开始数:步长:结束数E=1:2:10得E=135796、矩阵连接B=abV=a;b第7页,本讲稿共93页2.1.2 矩阵及其元素的赋值7、用函数创建如:zeros(m,n)ones(m,n)eye(m,n)zeros(3);zeros(3,3);zeros(2,3);zeros(3,2);nones(3);ones(3,3);ones(2,3);ones(3,2);neye(3);eye(3,3);eye(3,4);eye(4,3);第8页,
5、本讲稿共93页2.1.2 矩阵及其元素的赋值8、rand(m,n)%产生均匀分布随机数(产生均匀分布随机数(0,1)9、rand(state,0)%把均匀分布伪随机发生器置为把均匀分布伪随机发生器置为0状态状态10、randn(m,n)%产生正态分布随机数产生正态分布随机数11、magic(m)%产生魔方数组(对高维不适用)产生魔方数组(对高维不适用)%即每行、每列及对角元素之和为即每行、每列及对角元素之和为(n3+n)/212、linspace(a,b,n)%在在a和和b之间均匀产生之间均匀产生n个点的值个点的值如:如:f=linspace(0,1,5)则则 f=0 0.25 0.5 0.7
6、5 1.013、logspace(a,b,n)%在在a和和b之间对数分布产生之间对数分布产生n个点的值个点的值如:如:f=logspace(0,1,5)则则 f=1.0000 1.7783 3.1623 5.6234 10.0000第9页,本讲稿共93页2.1.2 矩阵及其元素的赋值n矩阵中的元素(用圆括号中数字来注明)1.A(i,j)表示第i行,第j列元素。2.A(i)表示第i个元素。矩阵中元素的排序如右所示矩阵中元素的排序如右所示3.A(i,j)=常量,表示给A中元素赋值。当下标超出原矩阵的尺寸,则自动扩展行列并补零。当下标超出原矩阵的尺寸,则自动扩展行列并补零。第10页,本讲稿共93页2
7、.1.2 矩阵及其元素的赋值4.A(:,j)表示A阵中第j列所有元素。5.A(i,:)表示A阵中第i行所有元素。6.A(2:3,4:6)表示第2行到第3行,第4列到第6列的子矩阵。7.A(3:7)指A阵中第3个到第7个元素(列优先)(列优先)矩阵的序号编址:按列计数。8.A(2)=表示去除矩阵中元素。此时矩阵变为行矩阵。9.A(:)指A阵中所有元素组成列向量。第11页,本讲稿共93页2.1.3 复数1、复数的虚部部分用i 或j表示。如:2+3i,3-4j2、复数可直接计算。如如:z=2+3i;3-4j或f=z+2+j;3;3、复数的实部和虚部可分别赋值。但 i和j需先清除。如:clear i
8、j f=1,3;5,7+2,4;6,8*j第12页,本讲稿共93页2.1.3 复数4、B=Z 表示共轭转置。5、B=conj(Z)表示共轭。如:Z=1+2i,3-4j则:B=Z 有 B=1-2i 3+4j B=conj(Z)有 B=1-2i,3+4j第13页,本讲稿共93页2.1.3 复数6、B=conj(Z)表示转置。7、B=Z.表示非共轭复数转置。如:Z=1+2i,3-4j则:B=conj(Z)有 B=1+2i 3-4j B=Z.有 B=1+2i 3-4j第14页,本讲稿共93页2.1.4 变量的查询,存储,提取1、变量的查询 who 或 whos2、变量的存储 save 文件名.mat
9、变量列表 如:save sar a b c 变量中间用空格隔开,不能变量中间用空格隔开,不能加逗号。加逗号。3、变量的提取 load 文件名4、变量的清除 clear 变量列表5、清除所有变量 clear all第15页,本讲稿共93页2.1.5 基本赋值矩阵n为了方便给大量元素赋值,MATLAB提供了一些基本矩阵。见书中表2.1n如:A=zeros(m,n)全0矩阵B=ones(m,n)全1矩阵C=eye(m,n)单位矩阵D=rand(m,n)01之间随机数均匀分布randn(state,0);%把随机数发生器置0E=randn(m,n)均值为0的,单位方差正态分布随机矩阵F=magic(m
10、)魔方矩阵第16页,本讲稿共93页G=linspace(a,b,n)线性分隔,a,b之间均匀产生n个数H=logspace(a,b,n)对数分隔,a,b之间产生n个数K=diag(A);取A中对角线元素得到列向量列向量。P=diag(diag(A)产生对角阵 a=1 2 3 4;b=diag(a)产生对角阵如 A=1 2 3;4 5 6;7 8 9 B=diag(A)则:B=1;5;9;第17页,本讲稿共93页本讲小结n变量定义和赋值时,()和 有什么区别?n你能用几种方法定义一个3*3的复数矩阵,求其共轭转置矩阵、转置矩阵。n定义3*3实矩阵,求出其行列式和逆阵n把你实验时遇到的错误记在笔记
11、上。n整理笔记,以“变量及其赋值”为主题绘制思维导图第18页,本讲稿共93页2.2 矩阵的初等运算2.2.1 矩阵的加减乘除矩阵的加减乘除1、+,-,*,/,2、点乘:、点乘:.*右除:右除:./左除:左除:.1、C=A+B;C=A-B C=A*B 注意:矩阵注意:矩阵 必须相匹配必须相匹配2、X=AB 表示表示AX=B X=A-1B 即X=inv(A)*B3、X=A/B 表示表示XB=A X=AB-1 即X=A*inv(B)4、m,n=size(A)计算矩阵计算矩阵A的行列大小的行列大小5、K=length(A)计算矩阵计算矩阵A的行列大小中最大的数的行列大小中最大的数第19页,本讲稿共93
12、页2.2.1 矩阵的加减乘除点乘、点除点乘、点除6、C=A.*B 对应元素间相乘。第20页,本讲稿共93页7、C=A./B 对应元素间相除。8、C=A.B第21页,本讲稿共93页2.2.2 矩阵除法及线性方程组的解1、方阵的行列式B=det(A)即B=|A|2、方阵的求逆B=inv(A)即B=A-1条件|A|03、方阵的伪逆矩阵B=pinv(A)条件|A|=04、方阵的伴随矩阵B=inv(A)*det(A)即B=A-1|A|第22页,本讲稿共93页2.2.3 矩阵的乘方和幂次函数1、矩阵乘方矩阵乘方2、.元素对元素的乘方元素对元素的乘方nC=An表示A阵自乘n次。nC=A(-n)表示A阵的逆矩
13、阵自乘n次。nC=A.n表示A阵中每个元素自乘n次。nC=A.(-n)表示A阵中每个元素自乘n次后的逆阵,即每个元素为1/(An)。第23页,本讲稿共93页n如 nC=A2nC=A.2nC=A(-2)=inv(A)2nC=A.(-2)第24页,本讲稿共93页2.2.4 矩阵结构形式的提取与变换nB=fliplr(A)%将A矩阵左右翻转nB=flipud(A)%将A矩阵上下翻转nB=reshape(A,m,n)%将A阵重组为mxn矩阵nB=rot90(A)%将A矩阵逆时针翻转90度nB=diag(A)%提取A矩阵的对角组成列向量nB=tril(A)%提取A矩阵的左下三角部分nB=triu(A)%
14、提取A矩阵的右上三角部分第25页,本讲稿共93页n如:nB=fliplr(A)nB=flipud(A)nB=rot90(A)nB=tril(A)第26页,本讲稿共93页2.3 元素群运算n2.3.1数组及其赋值1、t=初值:步长:终值;如t=0:0.1:1tt=10:-1:12、t=linspace(初值,终值,点数)如:tr=linspace(0,2*pi,9)3、t=logspace(初值,终值,点数)如:tp=logspace(0,1,11)第27页,本讲稿共93页2.3.2 元素群的四则运算n表示对矩阵中每个元素进行运算 如如 X=1 2 3;Y=4 5 6nZ=X.*YZ=41018
15、nZ=X.YZ=42.52nZ=X.YZ=132729nZ=X.NN=2Z=149nZ=2.XYZ=248163264第28页,本讲稿共93页2.3.3 元素群的函数n等命令可以直接MATLAB中exp、sprt、sin、cos使用在矩阵上,这种运算只是定义在矩阵的单个元素上,即分别对矩阵的每个元素进行运算。MATLAB中也提供了基本的三角函数。n注意其中的取整注意其中的取整函数名函数名含含义义abs绝对值或者复数模sqrt平方根real实部imag虚部conj复数共轭round4舍5入到整数fix舍入到最接近0的整数floor舍入到最接近-的整数ceil舍入到最接近的整数第29页,本讲稿共9
16、3页2.3.3 元素群的函数函数名函数名含含义义sign符号函数rem留数sin正弦cos余弦tan正切asin反正弦acos反余弦atan反正切atan2第四象限反正切函数名函数名含含义义sinh双曲正弦cosh双曲余弦tanh双曲正切exp自然指数log自然对数log10以10为底的对数bessel贝赛尔函数gamma伽吗函数rat有理逼近第30页,本讲稿共93页2.4 逻辑判断及流程控制2.4.1 关系操作符nMATLAB常用的关系操作符有:(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。nMATLAB的关系操作符可以用来比较两个大小相同的数组,或者比较一个数组和一个标量
17、。在与标量比较时,结果和数组大小一样。na=1:9;nb=a4nb=000011111nc=a(a4)nc=56789第31页,本讲稿共93页2.4.1 关系操作符n矩阵查找和排序n子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如:na=10:20;nfind(a15)nans=n7891011n矩阵的排序使用sort函数,它将矩阵按照升序排列。第32页,本讲稿共93页2.4.2逻辑运算n逻辑操作符定义了一种与或非的关系表达式。MATLAB的逻辑操作符有&(与)、|(或)、(非)、xor(异或)。例如:nc=(a4)nc=111100000nc=(a4)&(a7)nc=000
18、011000nC=xor(A,B)第33页,本讲稿共93页2.4.3其他关系与逻辑函数nxor(x,y)异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。nany(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1。nall(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1。第34页,本讲稿共93页%逻辑函数的运用示例。randn(state,1),R=randn(3,6)%创建正态随机阵L=abs(R)1.5%不等式条件运算,结果给出逻辑数组R(L)=0%逻辑1对应的元素赋0值。s=(find(R=0
19、)%利用find获得符合关系等式条件的元素单下标R(s)=111%利用单下标定位赋值ii,jj=find(R=111);%利用find获得符合关系等式条件的元素双下标disp(ii),disp(jj)第35页,本讲稿共93页【例】关系运算运用之一:求近似极限,修补图形缺口。t=-2*pi:pi/10:2*pi;y=sin(t)./t;subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title(残缺图形)tt=t+(t=0)*eps;yy=sin(tt)./tt;subplot(1,2,2),plot(tt,yy)
20、,axis(-7,7,-0.5,1.2)xlabel(t),ylabel(yy),title(正确图形)Warning:Dividebyzero.第36页,本讲稿共93页第37页,本讲稿共93页【例】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。nt=linspace(0,3*pi,500);y=sin(t);nz1=(t2*pi).*y;nw=(tpi/3&t7*pi/3&t8*pi/3);nw_n=w;nz2=w*sin(pi/3)+w_n.*z1;nsubplot(1,3,1),plot(t,y,:r),ylabel(y)nsubplot(1,3,
21、2),plot(t,z1,:r),axis(010-11)nsubplot(1,3,3),plot(t,z2,-b),axis(010-11)第38页,本讲稿共93页第39页,本讲稿共93页【例】写出生成下图所示波形的MATLAB脚本文件M文件。图中虚线为正弦波,要求它的负半波被置零,且在处被削顶。第40页,本讲稿共93页t=linspace(0,3*pi,500);y=sin(t);z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t=10y=x2+3;elseifx=0y=x3+4*x;elsey=x5+x;endyx=input(x=);ifx=10y=x2+3;elseif
22、x=0y=x3+4*x;elsey=x5+x;endendy第45页,本讲稿共93页2.4.4 流程控制语句 for循环nfor循环允许一组命令以固定的次数重复,它的一般形式是for x=array commandendnfor 和end之间的命令串按数组array的每一列执行一次,直到n次后终止。n如:forj=1:2:10y=j+j.2;end第46页,本讲稿共93页2.4.4 流程控制语句1.for循环不能使用内部重新赋值循环变量而终止;2.for循环内部接受任何有效的MATLAB数组;3.for循环可以嵌套;4.只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行
23、很慢,一个好的MATLAB算法不应当出现循环语句。Tic/toc5.循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。第47页,本讲稿共93页2.4.4 流程控制语句nwhile循环n与for循环以固定的次数求一组指令相反,while循环以不定的次数求一组语句的值。While循环的一般形式为:while expression commondsendn只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。第48页,本讲稿共93页求y=0;forx=1:100y=y+x;endyN=input(N=);y=0
24、;fori=1:Nforj=1:Ny=y+1/(i+j);endendyN=input(N=);y=0;i=1;whilei=Nj=1;whilej=Ny=y+1/(i+j);j=j+1;endi=i+1;endy第49页,本讲稿共93页【例】Fibonacci数组的元素满足Fibonacci规则:,;且。现要求该数组中第一个大于10000的元素na(1)=1;a(2)=1;ni=2;nwhilea(i)=10000a(i)break;end;Endi结果:ans=10946i=21第51页,本讲稿共93页2.4.4 流程控制语句Switch 语句是一种均衡实现的多分支语句。Switch ex
25、pressionCase 值1 commands1Case 值2 commands2 Otherwise commandsNend第52页,本讲稿共93页学生的成绩管理,用来演示switch结构的应用。clear;for i=1:10 ai=89+i;bi=79+i;ci=69+i;di=59+i;end;c=d,c;Name=Jack,Marry,Peter,Rose,Tom;Mark=72,83,56,94,100;Rank=cell(1,5);S=struct(Name,Name,Marks,Mark,Rank,Rank);第53页,本讲稿共93页for i=1:5 switch S(i
26、).Marks case 100 S(i).Rank=满分满分;case a S(i).Rank=优秀优秀;case b S(i).Rank=良好良好;case c S(i).Rank=及格及格;otherwise S(i).Rank=不及格不及格;endenddisp(学生姓名学生姓名 ,得分得分 ,等级等级);disp()for i=1:5;disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end;结果:结果:学生姓名得分等级Jack72及格Marry83良好Peter56不及格Rose94优秀Tom100满
27、分第54页,本讲稿共93页2.5 基本绘图方法2.5.1 直角坐标中的两维曲线nplot(y)以y的下标作为x坐标,以y值作为y坐标。nplot(x,y)数组x和y的长度应匹配。n每次绘制将清除以前的图形。第55页,本讲稿共93页2.5.1 直角坐标中的两维曲线n图形的标注和图例1、title(text)%给图形加上标题2、xlabel(text)%给X轴加上说明3、ylabel(text)%给Y轴加上说明4、zlabel(text)%给Z轴加上说明5、text(x,y,string)%在图形指定位置加上说明6、gtext(string)%利用鼠标在图形加上说明7、legend(string1
28、,string2,.)%给图形加图例8、legendoff%关闭图例第56页,本讲稿共93页如:作y=sin(t)的二维图形nt=linspace(0,3*pi,200);ny=sin(t);nplot(t,y);ntitle(y=sin(t);nxlabel(t/s);nylabel(y=sin(t);ntext(3,0.4,y=sin(t);nlegend(y=sin(t);ngtext(y=sin(t)第57页,本讲稿共93页2.5.2线型、点型和颜色nplot(x,y,r:)后面是颜色和线型标识符颜色标识符线型标识符线型y黄.点S正方形标记m品红o圆圈D菱形标记c青xX号朝上三角形r红
29、+号V朝下三角形g绿-实线朝右三角形b蓝*星号1error(VAL must be a scalar.)endn这里,如果变量val 不是一个标量,error 显示消息字符串,把控制权返回给命令命令窗口和键盘。第91页,本讲稿共93页M函数文件示例。circle.mfunctionsa=circle(r,s)%CIRCLEplotacircleofradiirinthelinespecifiedbys.%r指定半径的数值%s指定线色的字符串%sa圆面积%circle(r)利用蓝实线画半径为r的圆周线.%circle(r,s)利用串s指定的线色画半径为r的圆周线.%sa=circle(r)计算圆面积,并画半径为r的蓝色圆面.%sa=circle(r,s)计算圆面积,并画半径为r的s色圆面.%编写于2006年4月7日,修改于2006年6月27日。第92页,本讲稿共93页ifnargin2error(输入宗量太多。);end;ifnargin=1s=b;end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);ifnargout=0plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s)endaxis(square)第93页,本讲稿共93页