第二讲-Matlab语言程序设计课件_第1页
第二讲-Matlab语言程序设计课件_第2页
第二讲-Matlab语言程序设计课件_第3页
第二讲-Matlab语言程序设计课件_第4页
第二讲-Matlab语言程序设计课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

第二讲MATLAB语言程序设计基础Matlab基础与应用张文静zhangwj@基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容3.1基本数据类型数值型:双精度、单精度、整数字符串型函数句柄Java类逻辑类单元结构数据结构体3.1.1变量、常量与赋值语句结构变量命名规则变量名区分大小写;变量名最多不超过63个字符;变量名必须以字母打头,之后可以是任意字母、

数字或下划线,变量名中不允许使用标点、空格;MATLAB的保留关键字不能作为变量名。MATLAB保留常量3.1.1变量、常量与赋值语句结构赋值语句结构3.1.1变量、常量与赋值语句结构直接赋值<变量名>=<表达式><表达式>函数调用[返回变量列表]

=函数名(输入变量列表)矩阵:纵横排列的二维数据表格向量:矩阵只有一行或一列时,就成为向量标量:矩阵只有一行一列,就成为标量矩阵元素:实数或复数或表达式矩阵输入方法:直接输入法;利用M文件建立矩阵3.1.2矩阵的MATLAB表示——简单矩阵行向量列向量>>A=[1;2;3;4;5]A=12345>>A=[123,4,5]A=123453.1.2矩阵的MATLAB表示——简单矩阵简单矩阵>>A=[123;4,5,6;789]A=123456789例:>>A=[123456789]A=123456789输入方法1:输入方法2:3.1.2矩阵的MATLAB表示——简单矩阵矩阵元素还可以由表达式构成,例如>>x=[-1.3,sqrt(3),(1+2+3)*4/5]得到如下结果:x=-1.30001.73214.8000矩阵元素可以用下标变量的形式来引用>>x(5)=abs(x(1))x=-1.30001.73214.800001.30003.1.2矩阵的MATLAB表示——简单矩阵>>B=[12;34]+1i*[56;78]>>B=[1+5i2+6i;3+7i4+8i]3.1.2矩阵的MATLAB表示——复数矩阵注:矩阵元素内部不能有空格;数字和i之间不能留空格,1i中的1不可忽略(有些版本可以忽略)。空矩阵>>X=[]把一个空矩阵赋给x。特殊矩阵伴随矩阵,对角矩阵,万达摩方阵,魔术矩阵全0矩阵,全1矩阵,随机数矩阵,单位矩阵,线性等距向量,对数等分向量,设三维绘图基底坐标平面3.1.2矩阵的MATLAB表示——空矩阵与特殊矩阵

利用冒号表达式建立一个向量,一般格式是:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。

>>a=0:0.5:10用linspace函数产生行向量,其调用格式为:

linspace(a,b,n),其中a和b是生成向量的第一个和最后一个元素,n是元素总数。>>b=linspace(0,10,20)显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价3.1.2矩阵的MATLAB表示——特殊矩阵生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例:求多项式

的伴随矩阵,可用命令

>>A=[1,0,-7,6];

>>compan(A)ans=0-761000103.1.2矩阵的MATLAB表示——特殊矩阵伴随矩阵:>>eig(A)ans=-3.00002.00001.0000在区间[20,50]内均匀分布的5阶随机矩阵

>>x=20+(50-20)*rand(5)均值为0.6、方差为0.1的5阶正态分布随机矩阵

>>y=0.6+sqrt(0.1)*randn(5)3.1.2矩阵的MATLAB表示——特殊矩阵随机矩阵:建立一个3×3零矩阵:

zeros(3)

建立一个3×2零矩阵:

zeros(3,2)设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵:

A=[123;456];%产生一个2×3阶矩阵A

zeros(size(A))%产生与A同样大小的零矩阵3.1.2矩阵的MATLAB表示——特殊矩阵零矩阵:每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。求魔方矩阵的函数是magic(n),其功能是生成一个n阶魔方阵。

>>magic(3)

ans=8163574923.1.2矩阵的MATLAB表示——特殊矩阵魔方矩阵:除第一行第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x,y均为向量,两者不必等长。例

>>toeplitz(1:3)ans=1232123213.1.2矩阵的MATLAB表示——特殊矩阵托普利兹矩阵:最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个万达摩矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的万达摩矩阵。例:>>vander([1;2;3;5])ans=1111

84212793112525513.1.2矩阵的MATLAB表示——特殊矩阵万达摩方阵:大矩阵可由方括号中的小矩阵或向量建立例:执行如下命令>>A=[A;[135]]将生成新的矩阵新增向量与原矩阵必须维数匹配,否则出现错误信息3.1.2矩阵的MATLAB表示——建立大矩阵通过下标引用矩阵的元素

>>A(3,2)采用矩阵元素的序号(相应元素在内存中的排列顺序)来引用矩阵元素

>>A(5)3.1.2矩阵的MATLAB表示——矩阵元素引用

在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推(序号(Index)与下标(Subscript)是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得)。A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素;A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素;A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。3.1.2矩阵的MATLAB表示——矩阵拆分

(1)利用冒号表达式获得子矩阵注:end可用于表示某一维的末尾元素下标。在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为>>X=[]

注意:X=[]与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。3.1.2矩阵的MATLAB表示——矩阵拆分(2)利用空矩阵删除矩阵的元素命令cat()格式A=cat(n,A1,A2,……)n=1时,按[A1;A2;A3]构造n=2时,按[A1,A2,A3]构造n=3时,构造三维数组。3.1.3构造多维数组输入的字符串要用单引号括起来。每个字符占用一个元素位置。例:>>s=‘Hello’

s

=

Helloabs(s):将字符串转成ASCII码。setstr(v):将v向量转成字符串。3.1.4字符串变量基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容假定有两个矩阵A和B矩阵转置

>>B=A’矩阵加减运算(维数相同的两个矩阵,或其中之一为标量)>>A+BA-B>>A+2A-2矩阵乘法(维数匹配的两个矩阵,或其中之一为标量)若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。矩阵除法两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。3.2.1代数运算矩阵的乘方矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。点运算

点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。矩阵翻转rot90(A),矩阵A逆时针翻转90度(Rotatematrix90degrees)flipud(A),矩阵A上下翻转(flipmatrixinup/downdirection)fliplr(A),矩阵A左右翻转(flipmatrixinleft/rightdirection)3.2.1代数运算六种逻辑运算逻辑与:&,and()逻辑或:|,or()逻辑非:~,not()逻辑异或:

xor()先决逻辑与:

&&先决逻辑或:

||注意:逻辑运算中,矩阵元素非0即1逻辑与、或、异或操作中的两个矩阵维数相同或其中之一为标量。3.2.2逻辑运算六种关系运算小于:<不大于:<=大于:>不大于:>=等于:==不等于:~=运算规则当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。3.2.3关系运算1)find:寻找逻辑值的向量元素下标2)all:逻辑条件全部3)any:逻辑条件任何一个4)exist:检查某变量是否存在5)isnan:检查非数值量6)finite:探测无穷大7)isempty:探测空8)isstr:探测字符串9)strcmp:比较字符串关系运算与逻辑运算函数基本数学函数abs:绝对值或复数的模floor:向负方向取整angle:相位角ceil:向正方向取整sqrt:平方根sign:符号函数real:实部rem:求余函数imag:虚部exp:指数函数conj:共轭复数log:自然对数round:四舍五入取整log10:常用对数fix:截尾取整3.2.4矩阵元素的数据变换三角函数sin:正弦sinh:双曲正弦cos:余弦cosh:双曲余弦tan:正切tanh:双曲正切asin:反正弦asinh:反双曲正弦acos:反余弦acosh:反双曲余弦atan:反正切atanh:反双曲正切atan2:双值反正切3.2.4矩阵元素的数据变换特殊函数bessel:贝塞尔函数gamma:函数rat:有理逼近erf:误差函数inverf:反误差函数elipk:第一种完全的椭圆积分elipj:雅可比椭圆函数3.2.4矩阵元素的数据变换输入函数input,格式如下A=input(提示字符串)A=input(提示字符串,’s’)前者要求用户输入矩阵,后者要求用户输入字符串输出函数disp(),格式如下>>A=[12;34]>>disp(A)12343.2.5输入与输出语句基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容for语句的格式为:for控制变量=表达式语句集end注:表达式是一个矩阵,矩阵的列被依次赋给控制变量,每赋一个新值,便执行一次循环体。通常表达式形式是s1:s3:s2,它的每一列为一个标量。如果表达式关系不合理,内部循环体不执行。3.3.1循环语句1)for语句例:已知,当n=100时,求y的值。

程序如下:y=0;n=100;fori=1:1:n y=y+1/(2*i-1);end3.3.1循环语句格式为:

while表达式

语句集

end

只要表达式的值不为0,语句集里的语句就不断被执行。3.3.1循环语句2)while语句例:从键盘输入若干个数,当输入0时结束输入,求平均值及总和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)mean=sum/cnt;end3.3.1循环语句(1)单分支if语句if条件语句组End3.3.2条件转移语句当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。(2)双分支if语句if条件语句组1else语句组2end

3.3.2条件转移语句当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。例:计算分段函数的值程序如下:x=input('请输入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2)elsey=log(x+sqrt(1+x*x))/2end3.3.2条件转移语句

(3)多分支if语句if条件1

语句组1elseif条件2

语句组2……elseif条件m

语句组melse

语句组nend3.3.2条件转移语句例:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s'); ifc>='A'&c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseifc>='a'&c<='z'disp(setstr(abs(c)-abs('a')+abs('A'))); elseifc>='0'&c<='9' disp(abs(c)-abs('0')); else disp(c); end3.3.2条件转移语句switch语句switch表达式

case表达式1

语句组1case表达式2

语句组2……case表达式m

语句组m

otherwise

语句组nend3.3.3开关语句当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,…,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n,即otherwise语句。当任意一个分支的语句执行完后,直接执行switch语句的下一句。3.3.3开关语句例某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

price<200没有折扣

200≤price<5003%折扣

500≤price<10005%折扣

1000≤price<25008%折扣

2500≤price<500010%折扣5000≤price14%折扣输入所售商品的价格,求其实际销售价格。3.3.3开关语句程序如下:Price=input('请输入商品价格');switchfix(price/100)case{0,1}%价格小于200 rate=0;case{2,3,4}%价格大于等于200但小于500rate=3/100;casenum2cell(5:9)%价格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%价格大于等于1000但小于2500rate=8/100;casenum2cell(25:49)%价格大于等于2500但小于5000rate=10/100;otherwise%价格大于等于5000rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格3.3.3开关语句基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容两种工作方式键盘逐行输入命令命令语句集文件,扩展名“.m”,称为M文件两类M文件程序文件函数文件编写方法

普通ASCII码编写,用户可用熟悉的编辑器或文字处理器创建或修改。3.4.1文件编写与调试程序文件调用程序文件,立即执行文件各条语句,无需键盘逐条输入,效率高;程序文件的语句对整个MATLAB空间的变量起作用;demo程序都是程序文件的最好实例。函数文件M文件第一行包含function字样;与程序文件不同在于具有虚实结合的传递参数功能;文件中定义的局部变量不影响全局变量。3.4.1文件编写与调试函数文件的基本结构函数文件由function语句引导,其基本结构为:

function输出形参表=函数名(输入形参表)

注释说明部分函数体语句其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。3.4.1文件编写与调试例:编写函数文件求半径为r的圆的面积和周长。函数文件如下:function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长%2013年5月10日s=pi*r*r;p=2*pi*r;3.4.1文件编写与调试——函数文件例:用对分法(二分法)求解解:先将原方程化成的形式。程序如下:x1=1;x2=pi;fori=1:32y1=log(x1)-sin(x1);y2=log(x2)-sin(x2);x=0.5*(x1+x2);y=log(x)-sin(x);ify*y1>0,x1=x;endify*y2>0,x2=x;endendformatlong;

x,yx=2.219107148718498y=-2.058835324447728e-0103.4.1文件编写与调试——函数文件Step单步执行Stepin单步执行且深入被调函数Stepout跳出被调函数Run(或Continue)程序运行到下一断点或结束GoUnitCursor程序运行到光标处Set/ClearBreakpoint设置/清除断点Set/ModifyConditionalBreakpoint设置/修改条件断点Enable/DisableBreakpoint断点使能/实效ClearBreakpointsinAllFiles清除所有文件断点StopifErrors/Warnings若有错误/警告则停止ExitDebugMode退出调试3.4.1文件编写与调试——跟踪调试3.4.2利用UltraEdit编写M文件1)安装UltraEdit;从UltraEdit官方网站下载wordfile扩展文件包:ALLWORDFILESI

温馨提示

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

最新文档

评论

0/150

提交评论