《MATLAB入门》PPT课件.ppt_第1页
《MATLAB入门》PPT课件.ppt_第2页
《MATLAB入门》PPT课件.ppt_第3页
《MATLAB入门》PPT课件.ppt_第4页
《MATLAB入门》PPT课件.ppt_第5页
已阅读5页,还剩229页未读 继续免费阅读

下载本文档

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

文档简介

第二章MATLAB程序设计基础,*第一节教学目标1基本运算介绍。2变量的概念。3系统函数的概念。4一般的应用问题转换为计算机模型。,第二章MATLAB程序设计基础,一、基本运算,MATLAB=,第二章MATLAB程序设计基础,一、基本运算简单的数学运算,1+2+3+4+51+2+3+4+5;,第二章MATLAB程序设计基础,一、基本运算复杂一点点的数学运算,已知:x=15,y=10,z=7求解:(x+2Y+5z)/3x=15;y=10;z=7;(x+2*y+5*z)/3,第二章MATLAB程序设计基础,一、基本运算,这些运算的本质:基本数学运算。,操作数,运算符,第二章MATLAB程序设计基础,一、基本运算1MATLAB算术运算符加、减、乘、除、幂次方+-*/运算次序:自左向右运算。优先级最高,乘除次之,后加减。如果有括号,括号优先执行。,第二章MATLAB程序设计基础,二、变量,变量程序执行过程中可以变化的量。MATLAB中的变量可以由用户指定变量名。通过变量名随时可以引用变量和修改变量。,第二章MATLAB程序设计基础,二、变量,MATLAB特殊之处:无需进行变量声明。(遇到新变量名时,自动生成变量,并指定合适的存储空间。如变量早已存在,则自动更新。)*利与弊的分析*,第二章MATLAB程序设计基础,二、变量1.系统特殊变量,1+2+3+4+5ans是个特殊的系统变量。没有指定变量来存储运算结果时,系统会自动将结果存储在临时变量ans中。,第二章MATLAB程序设计基础,二、变量1.系统特殊变量MATLAB的系统特殊变量,ans:临时变量pi:inf:无穷大eps:极小值NaN:NotaNumber(NotAvailable)nan:同上i:虚数sqrt(-1)j:虚数sqrt(-1),第二章MATLAB程序设计基础,二、变量2自定义变量,注意这些操作:a=1abc=1+2+3+4+5a=1;b=3;c=5;A=2,B=4,C=6area=r2?,第二章MATLAB程序设计基础,二、变量2自定义变量命名规则*变量名由字母、数字和下划线组成。字母间不可留空格且第一个字符必须为字母*区分大小写。*变量名的长度上限为n个字符。补充:*变量名不能为中文;*系统变量名不要和自定义重名。,第二章MATLAB程序设计基础,二、变量,万一自定义变量名和系统变量名一样结果会怎样?怎么办?pi=2piclearpipi,第二章MATLAB程序设计基础,二、变量,函数:isvarnameDeterminewhetherinputisvalidvariablename语法:tf=isvarname(str)isvarnamestr观察下面的变量名是否合理?【书例2-1】isvarnamemyVarNameisvarname7myVarName,第二章MATLAB程序设计基础,二、变量3获取当前变量命令行直接键入变量名。,第二章MATLAB程序设计基础,二、变量4变量的显示精度控制显示精度函数:format控制精度计算的函数:(书P58)digits(n):设置缺省的精度;vpa(S,n):将S表示为n位有效位数的形式。(Help:Variable-precisionarithmetic),第二章MATLAB程序设计基础,二、变量4变量的显示精度(1)format命令用来显示计算的精度。不是用来改变计算的精度。MATLAB默认以double(双精度)进行运算和存储。使用format可以控制数据不同的显示格式。,formatshortformatshorteformatlongformatlongeformatratformatbank,第二章MATLAB程序设计基础,二、变量4变量的显示精度,用pi来测试一下显示精度:piformatshortpiformatlongpiformatratpi,第二章MATLAB程序设计基础,Help:digits,vpa函数:digitsVariable-precisionaccuracy语法:digitsdigits(d)d=digits,4变量的显示精度,第二章MATLAB程序设计基础,Help:digits,vpa函数:vpaVariable-precisionarithmetic语法:R=vpa(A)R=vpa(A,d),4变量的显示精度,Examplesold=digits;digits(4);vpa(1/3)vpa(1/3000)digits(old);ans=0.3333ans=0.0003333,vpa(1/3)vpa(1/3,10)vpa(1/3,40)ans=0.3333333333333333333333333ans=0.3333333333ans=0.3333333333333333333333333333333333333333,第二章MATLAB程序设计基础,s=1/3+1/3digits(2)s?vpa(s)vpa(s,10)s=1+1/3+1/3vpa(s)?,4变量的显示精度,第二章MATLAB程序设计基础,二、变量5查看变量who:查看当前工作区(workspace)的变量。whos:查看当前变量的详细信息。,第二章MATLAB程序设计基础,二、变量6清除变量clear:清除所有定义过的变量。clear变量名:清除某个变量。,第二章MATLAB程序设计基础,二、变量7变量的存取思考:关闭MATLAB,释放工作空间,所有变量会被释放。这样会出现什么问题?解决方法:将工作空间中的变量存储到文件中。即使退出了MATLAB系统,变量依然存在。需要使用时,将这些变量从文件中读取出来即可。,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令功能:将变量以二进制的方式存储至后缀名为.mat的文档中。格式:savefilename,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令命令实例:假定内存中已经存在变量X,Y,ZsavemyFileXYZdir.myFile.mat.,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令注意事项:)存储文件为.mat的二进制mat文档中。)若文件名缺省,则自动存储到matlab.mat中。)若为savefilenamex则只将变量x存储到文件中。,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令注意事项:4)若为savefilenameuwappend则将变量u,w添加到文件名为filename.mat的文件中。5)若为savefilenameuwascii则将变量u,w保存为filename的8位ASCII文档。6)若为savefilenameuwascii-double则将变量u,w保存为filename的16位ASCII文档。,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令,ASCII文档特色(使用-ascii后缀):(1)ASCII文档可以看到文档内容。(2)默认的存储格式是二进制的mat文件。存储ASCII文档必须加-ascii。(3)save-ascii通常只存为一个变量,原有变量名消失。load载入时,取用文件名为变量名。(4)对于复数,save-ascii后只存实部,虚部抛弃。(5)ASCII文件通常比二进制文件大,二进制文档较小,读取速度快。,第二章MATLAB程序设计基础,二、变量7变量的存取(1)save命令,建议:尽量使用二进制文件存储MATLAB变量。,第二章MATLAB程序设计基础,二、变量7变量的存取(2)load命令,功能:读取保存在文件中的变量。格式:loadfilenameloadfilenameasciiloadfilenamemat,第二章MATLAB程序设计基础,二、变量7变量的存取(2)load命令,注意事项:首先,MATLAB在系统默认路径中自动寻找名称为filename.mat的二进制文件。其次,若无该文件,则找filename的文件,用ASCII方式载入。,第二章MATLAB程序设计基础,二、变量7变量的存取(2)load命令,【例题】:clearall;a=1;b=2;c=3;savemydata1savemydata2abloadmydata1loadmydata1a,第二章MATLAB程序设计基础,二、变量8变量的初始化(三种方式),1用赋值语句初始化变量。2用input函数从键盘输入初始化变量。例如:in1=input(enterdata:);Enterdata:1.23in2=input(enterdata:,s)Enterdata:1.23in1+in2(?)3从文件读取一个数据。(以后介绍),第二章MATLAB程序设计基础,二、变量9变量的作用域,(1)局部变量(Local)(2)全局变量(Global)(3)永久变量(Persistent),第二章MATLAB程序设计基础,二、变量9变量的作用域局部变量:在函数中使用的变量,只能在函数的范围内使用。全局变量:在命令文件或工作空间中定义。用global定义全局变量。globalGvar1Gvar2Gvar3永久变量:只能在函数文件中定义和使用,只允许定义它的函数存取。只有清除函数或者关闭MATLAB时,才能从内存中清除它们。persistentperVar;,第二章MATLAB程序设计基础,四、函数相关知识3变量的作用域局部变量:在函数中使用的变量,只能在函数的范围内使用。全局变量:在命令文件或工作空间定义。用global定义全局变量。globalvar1var2var3,例如:(?)func1.mfunctiony=func1(x)globalGvar;(?)y=x;Gvar=x*10func2.mfunctiony=func2(x)globalGvar;y=x;Gvar=x*100,例如:globalGvar(!)func1.mfunctiony=func1(x)globalGvar;Y=x;Gvar=x*10func2.mfunctiony=func2(x)globalGvar;Y=x;Gvar=x*100,第二章MATLAB程序设计基础,tips:尽量不使用全局变量和永久变量!,第二章MATLAB程序设计基础,三、常用函数(P55),初等数学函数:helpelfun(Elementarymathfunctions.)高等数学函数:helpspecfunhelpelmat(Specializedmathfunctions.)(Elementarymatricesandmatrixmanipulation.),第二章MATLAB程序设计基础,三、常用函数,注意问题:(1)等式中,函数一定是出现在等式的右边。(2)函数参数要求。(变量个数和格式要求)(3)允许函数嵌套。,第二章MATLAB程序设计基础,四、现实问题转化为数学模型例如:哥哥弟弟年龄问题。哥哥比弟弟大19岁,哥哥年龄是弟弟的3倍还多1,问:哥哥和弟弟的年龄分别是多少?,第二章MATLAB程序设计基础,四、现实问题转化为数学模型例如:吃桃问题。核桃5毛钱一个,每3个桃核可以换一个桃子。如果有十元钱,问:一共能吃到多少桃子?,课后任务,一、熟悉基本数学运算。二、熟练使用变量的相关应用。,第二章MATLAB程序设计基础,*第二节教学目标通过实例演练熟悉部分常用函数。,第二章MATLAB程序设计基础,实战演练常用函数的使用,第二章MATLAB程序设计基础,函数?,第二章MATLAB程序设计基础,(P55)小整理:MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数angle(z):复数z的相角round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为多项分数展开rats(x):将实数x化为分数表示,第二章MATLAB程序设计基础,小整理:MATLAB常用的基本数学函数sign(x):符号函数(Signumfunction)。当x0时,sign(x)=1。rem(x,y):求x除以y的余数gcd(x,y):整数x和y的最大公因数(Greatestcommondivisor)lcm(x,y):整数x和y的最小公倍数(Leastcommonmultiple)exp(x):自然指数pow2(x):2的指数log(x):以e为底的对数,即自然对数log2(x):以2为底的对数log10(x):以10为底的对数,第二章MATLAB程序设计基础,实战1:函数abs功能数值的绝对值与复数的幅值格式Y=abs(X)%返回参量X的每一个分量的绝对值;%若X为复数的,则返回每一分量的幅值%abs(X)=sqrt(real(X).2+imag(X).2)例x=-18;z1=abs(x)y=-2+4i;z2=abs(y),第二章MATLAB程序设计基础,实战2:函数sqrt功能求平方根函数格式Y=sqrt(X)%数值的平方根运算例x=16;z1=sqrt(x)y=-18;z2=sqrt(y)f=2+4i;z3=sqrt(f),第二章MATLAB程序设计基础,实战3:函数exp功能以e为底数的指数函数格式Y=exp(X)%对参量X的每一分量,求以e为底数的指数函数Y。%X中的分量可以为复数。%对于复数分量如,z=x+i*y,%则相应地计算:ez=ex*(cos(y)+i*sin(y)。例x=3;z1=exp(x)y=-3;z1=exp(y)f=2+4i;z3=exp(f),第二章MATLAB程序设计基础,实战4:函数log功能自然对数,即以e为底数的对数。格式Y=log(X)%对参量X中的每一个元素计算自然对数。%其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。%若z=x+i*y,则log对复数的计算如下:%log(z)=log(abs(z)+i*atan2(y,x)例:x=20.0855z1=log(x)f=2+4i;z3=log(f)下面的语句可以得到无理数的近似值:pai=abs(log(-1),第二章MATLAB程序设计基础,实战5:函数log10功能常用对数,即以10为底数的对数。格式Y=log10(X)%计算X中的每一个元素的常用对数,%若X中出现复数,则可能得到意想不到的结果。例x=10;z1=log10(x)y=-10;z1=log10(y)f=2+4i;z3=log10(f),第二章MATLAB程序设计基础,实战6:函数lcm功能整数x和y的最小公倍数格式z=lcm(x,y)%计算整数x和y的最小公倍数例x=10;y=23;z1=lcm(x,y)x=10;y=2;z2=lcm(x,y)x=10;y=-2;/?z3=lcm(x,y),第二章MATLAB程序设计基础,实战7:函数gcd功能整数x和y的最大公约数格式z=gcd(x,y)%计算整数x和y的最大公约数例x=10;y=23;z1=gcd(x,y)x=10;y=2;z2=gcd(x,y)x=10;y=-2;z3=gcd(x,y),第二章MATLAB程序设计基础,实战8:函数real功能复数的实数部分。格式Y=real(Z)%返回输入参量Z的每一个分量的实数部分。例f=3+8i;z=real(f),第二章MATLAB程序设计基础,实战9:函数imag功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例f=9+7i;z=imag(f),第二章MATLAB程序设计基础,实战10:函数conj功能复数的共轭值格式ZC=conj(Z)%返回参量Z的每一个分量的共轭复数:%conj(Z)=real(Z)-i*imag(Z)例f=9+7i;z=conj(f),如果两复数的实部相等,虚部系数互为相反数,那么,这两个复数叫做共轭复数.共轭复数的乘积是一个实数.,提问:什么是复数的共轭值?,第二章MATLAB程序设计基础,实战11:函数sin功能正弦函数格式Y=sin(X)%计算参量X(可以是向量、矩阵,元素可以是复数)%中每一个角度分量的正弦值Y*所有分量的角度单位为弧度值,第二章MATLAB程序设计基础,例计算下式的结果,其中x=-3.5度,Y=6.7度.x=pi/180*(-3.5);y=pi/180*6.7;z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y),第二章MATLAB程序设计基础,实战12:函数cos功能余弦函数格式Y=cos(X)%计算参量X(可以是向量、矩阵,元素可以是复数)%中每一个角度分量的余弦值Y*所有分量的角度单位为弧度值,第二章MATLAB程序设计基础,例计算下式的结果,其中x=-3.5度,Y=6.7度.x=pi/180*(-3.5);y=pi/180*6.7;z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y),第二章MATLAB程序设计基础,实战13:函数asin功能反正弦函数格式Y=asin(X)%返回参量X(可以是向量、矩阵)中每一个%元素的反正弦函数值Y。%若X中有的分量处于-1,1之间,%则Y=asin(X)对应的分量处于-/2,/2,%若X中有分量在区间-1,1之外,%则Y=asin(X)对应的分量为复数。,第二章MATLAB程序设计基础,实战13:函数asin例题:x=-1;z1=asin(x)x=-2;/?z2=asin(x),第二章MATLAB程序设计基础,实战14:函数acos功能反余弦函数格式Y=acos(X)%返回参量X(可以是向量、矩阵)中每一个%元素的反余弦函数值Y。%若X中有的分量处于-1,1之间,%则Y=acos(X)对应的分量处于0,之间,%若X中有分量在区间-1,1之外,%则Y=acos(X)对应的分量为复数。,第二章MATLAB程序设计基础,实战14:函数acos例题:x=-1;z1=acos(x)x=-2;/?z2=acos(x),第二章MATLAB程序设计基础,实战15:函数tan功能正切函数格式Y=tan(X)%计算参量X%(可以是向量、矩阵,元素可以是复数)%中每一个角度分量的正切值Y,%所有角度分量的单位为弧度值。,第二章MATLAB程序设计基础,实战15:函数tan特别地,我们要指出的是,tan(pi/2)和tan(-pi/2)并不是精确的值,因为matlab中的pi仅仅是精确值近似的表示值而已。例题:tan(pi/2)x=-pi/2+0.01:0.01:pi/2-0.01;plot(x,tan(x);gridon;,第二章MATLAB程序设计基础,实战16:函数atan功能反正切函数格式Y=atan(X)%返回参量X(可以是向量、矩阵)中每一个%元素的反正切函数值Y。%若X中有的分量为实数,则Y=atan(X)对应%的分量处于-/2,/2之间。例:atan(0),第二章MATLAB程序设计基础,这些函数只是MATLAB提供的函数中的很小的一部分。更多的函数学习还要依靠大家在实验课上的实战演练!,第二章MATLAB程序设计基础,学生演练实例1【例】求的算术运算结果。(2),第二章MATLAB程序设计基础,学生演练实例2【例】求的算术运算结果。(-0.0045),第二章MATLAB程序设计基础,学生演练实例3【例】复数,计算(0.3349+5.5801i),第二章MATLAB程序设计基础,学生演练实例4【例】求的算术运算结果。(0.5000),第二章MATLAB程序设计基础,学生演练实例5【例】求的算术运算结果。(0.3633),课后任务,一、熟练使用常用函数。(初等)。二、理解应用题并转化为数学模型,疑问,精度问题有时候函数结果返回0而不是0.0000。按理,0!=0.0000.类似的问题还有:在matlab中为什么sin(pi)!=0?而cos(pi)却等于-1,而不是-1.0000?而formatbankSin(0)=0.00,cos(pi)等于-1.00?,疑问,解释一:MATLAB中的数字是默认按照双精度型浮点数存储的,他们的区别可能有两种情况:一、0代表符号值的0,是没有经过舍入的精确值,而0.0000是浮点数,有舍入。由于MATLAB中默认数据类型是浮点型,所以在输入计算时两者是没有差别的。二、在MATLAB的输出结果中同样是浮点数,如果一个矩阵中各元素的数量级相差较大,同时显示出来时有的元素会显示为0.0000,如果你只单独显示这一个数,发现它只是很小,并不是0。,疑问,解释二:Sin是build-in函数,看不到源代码。让sin(0)=0而让sin(pi)!=0,cos(pi)=-1等完全由mathworks公司函数内部定义。,疑问,看如下的代码,分析:x=0;forn=1:82x=x+0.01endx=0.82,x=0;forn=1:82x=x+1endx=82,关于上机,实验课需要我们干什么?一、实验课前的知识点预习。二、准备实验课要演练的例题。三、实验课后的总结。,第二章MATLAB程序设计基础,第三节教学目标1一维数组创建和引用2二维数组创建和引用3特殊数组,第二章MATLAB程序设计基础,一、一维数组的创建建立方法一:直接输入法建立方法二:冒号法建立方法三:特殊方法,第二章MATLAB程序设计基础,一、一维数组的创建建立方法一:直接输入法A=1234A=1,2,3,4,第二章MATLAB程序设计基础,一、一维数组的创建建立方法二:冒号法调用格式:A=初始量:步长:终止量,第二章MATLAB程序设计基础,一、一维数组的创建建立方法二:冒号法例题:建立数组A,其中A=1,2,3,4,5A=1:1:5A=1:5,第二章MATLAB程序设计基础,一、一维数组的创建建立方法三:特殊方法调用格式:A=linspace(初始量,终止量,数组元素个数)B=logspace(初始量,终止量,数组元素个数),第二章MATLAB程序设计基础,例题:生成数组A,其中A=1,2,3,4,5A=linspace(1,5,5)A=linspace(1,5.5,5)A=linspace(1,5,5.5),第二章MATLAB程序设计基础,例题:生成数组B=logspace(0,2,5)B=logspace(0,2,5),第二章MATLAB程序设计基础,例题:生成数组B=logspace(1,pi,5)B=logspace(1,pi,5)例题:生成数组B=logspace(1,3,1)B=logspace(1,3,1),第二章MATLAB程序设计基础,一、一维数组的创建注意事项:logspace(y1,y2,N)表示在10y1和10y2之间插入N-2个元素,组成一个含有N个元素的数组;如果y2=pi,则表示在10y1和pi之间插入N-2个元素;如果NA=1,2,3,4,5A(3)A(1:3)A(1:2:5),第二章MATLAB程序设计基础,二维数组的创建直接输入法文件生成法(M文件、txt文件、excel文件、dat文件等,后面再讲),第二章MATLAB程序设计基础,二维数组的创建例题myArray=123456;6543215,sqrt(25),10-5,0+5,abs(-5),5,第二章MATLAB程序设计基础,四二维数组的引用:引用格式:arrayName(m,n);引用二维数组的第m行n列的元素arrayName(m,:);引用二维数组的第m行的所有列元素arrayName(:,n);引用二维数组的第n列的所有行元素arrayName(m1:m2,n);引用二维数组的第n列中m1至m2行的元素arrayName(m,n1:n2);引用二维数组的第m行中n1至n2列的元素arrayName(m1m2,n);引用二维数组的第n列中m1行和m2行的元素arrayName(m,n1n2);引用二维数组的第m行中n1列和n2列的元,第二章MATLAB程序设计基础,四二维数组的引用:例题:A=1,2,3,4,5;6,7,8,9,10A(1,:)A(:,3)A(2,1:2)A(1:2,2),第二章MATLAB程序设计基础,数组相关的习题(MATLAB演练),1、C数组定义如下,写出子数组的内容:c=1.1-;0.61.1-0.63.1;0c(2,:)c(:,end)c(1:2,2:end)c(6)c(4:end)c(1:2,2:4)c(13,2)c(22,33)c(222,333),2、当赋值语句执行后,数组的内容是什么,(1)a=123;456;789a(31,:)=a(13,:)(2)a=123;456;789a(31,:)=a(22,:)(3)a=123;456;789a=a(2,:)(4)a=123;456;789a=a(22,:),3、当语句执行后,a数组的内容是什么,(1)a=eye(3,3)b=123a(2,:)=b(2)a=eye(3,3)b=456a(:,3)=b(3)a=eye(3,3)b=789a(3,:)=b(312)(4)a=eye(3,3)b=789a(:,3)=b(312),课后任务,一、熟练掌握创建数组。二、熟练掌握引用数组。,第二章MATLAB程序设计基础,五特殊数组(1)字符数组调用格式:s=stringname=str1str2str3,第二章MATLAB程序设计基础,五特殊数组(1)字符数组s1=whoareyou;s2=Imwangling;s3=s1s2;m=size(s1);n=size(s2);k=size(s3);,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式一函数命令:char调用格式:S=char(T)表示将正整数矩阵转换成字符串矩阵S。,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式一T=10267132;509578S=char(T),第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式二函数命令:int2str,num2str调用格式:int2str(A)num2str(A,k)num2str(A,format)表示将数或矩阵转换成字符串或字符串矩阵。,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式二A=;;B1=int2str(A);B2=num2str(A,0);(?0)B3=num2str(A,%10.3f);B1+B2;B2+B3;B1+B3;,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式三函数命令:eval,str2num调用格式:eval(S)str2num(S)表示将字符串S转化为数值。,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式三a=12;w=13;x=12;S=a.*sin(w.*x)val=eval(S);v2=subs(S);(?),第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转换方式三v1=str2num(S);(?)str2num(3.14159e0)str2num(12;34)ans.*3,运算练习clear;fun=abs(x),x=-2,eval(fun),double(fun),第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串比较函数命令:strcmp调用格式:strcmp(str1,str2)表示将两个字符串进行比较,相等时返回逻辑值为真。,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串比较str1=bad;str2=bad;str3=dab;strcmp(str1,str2);strcmp(str1,str3);,第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转内嵌函数函数命令:inline调用格式:inline(exr)inline(expr,arg1,arg2,)表示将字符串表达式转化为函数表达式。(用来构造函数),第二章MATLAB程序设计基础,五特殊数组(1)字符数组*字符串转内嵌函数(help)g=inline(t2)f=inline(3*sin(2*x.2)f1=inline(5*sin(x)+3*cos(y),x,y),第二章MATLAB程序设计基础,五特殊数组(2)结构数组,提问:结构体的概念?如果让你统计全班同学基本信息,你的数据怎么组织?,第二章MATLAB程序设计基础,五特殊数组(2)结构数组*结构数组:是根据属性名组织起来的不同类型数据的集合。*结构数组通过属性名来引用。,第二章MATLAB程序设计基础,五特殊数组(2)结构数组函数命令:struct调用格式:sn=struct(filed1,filed2,),第二章MATLAB程序设计基础,五特殊数组(2)结构数组例题:结构数组student有name和age两个属性。两组数据:(liu,20);(Wang,21)。并求student(1),student(2),student(2).name。,第二章MATLAB程序设计基础,五特殊数组(2)结构数组student=struct(name,Liu,Wang,Age,20,21);student(1)student(2)student(2).name,第二章MATLAB程序设计基础,五特殊数组(2)结构数组例:建立学生档案结构体,并计算每个学生的总成绩。(page41)学号(number):数值型姓名(name):字符型身高(height):数值型英语考试成绩(English):数值型数学考试成绩(Math):数值型物理考试成绩(Physics):数值型,第二章MATLAB程序设计基础,五特殊数组(2)结构数组stud(1).number=input(pleaseinputnumber:);stud(1).math=input(pleaseinputmath:);stud(1).physics=input(pleaseinputphysics:);stud(1).english=input(pleaseinputenglish:);stud(1).total=stud(1).math+stud(1).physics+stud(1).english;,第二章MATLAB程序设计基础,五特殊数组(2)结构数组n=input(pleaseinputn:);fori=1:nstud(i).number=input(pleaseinputnumber:);stud(i).math=input(pleaseinputmath:);stud(i).physics=input(pleaseinputphysics:);stud(i).english=input(pleaseinputenglish:);stud(i).total=stud(i).math+stud(i).physics+stud(i).english;end,第二章MATLAB程序设计基础,五特殊数组(2)结构数组*三个相关的函数命令:fieldnames,size,rmfield,,第二章MATLAB程序设计基础,五特殊数组(2)结构数组fieldnames(stud)size(stud)rmfield(stud,number),第二章MATLAB程序设计基础,五特殊数组(2)结构数组结构数组的嵌套例题(page43):建立嵌套的结构数组。a=struct(name,Mike,number,1000,score,struct(math,90,english,89,physics,97);aa(1).numbera(1).score,第二章MATLAB程序设计基础,五特殊数组(3)细胞数组,提问:普通数组元素之间有什么关联?结构数组元素之间有什么关联?其特殊性在哪里?还有没有更特殊的可能性?,第二章MATLAB程序设计基础,五特殊数组(3)细胞数组函数命令:cell细胞数组通常用创建,数据通过数组下标引用。,第二章MATLAB程序设计基础,五特殊数组(3)细胞数组B=cell(5,3);B(1,1)=143;058;729;B(1,2)=Annecat;B(2,1)=3+7i;B(2,2)=0:pi/10:pi;B3,1=342;976;851;B3,2=AnneSmith;B4,1=3+7i;B4,2=-pi:pi/10:pi;,第二章MATLAB程序设计基础,五特殊数组(3)细胞数组*celldisp和cellplot方法B(1,1)=143;058;729;B(1,2)=Annecat;B(2,1)=3+7i;B(2,2)=0:pi/10:pi;Bcelldisp(B)cellplot(B),第二章MATLAB程序设计基础,五特殊数组(3)细胞数组*引用细胞数组元素:C=B1,1C=B(1,1)D=B1,1(2,2),第二章MATLAB程序设计基础,五特殊数组(3)细胞数组*细胞数组的更新:B(3,1)=No.1;(?)B3,2=No.2;B3,3=No.3;BM=B(1:3,1:2),第二章MATLAB程序设计基础,五特殊数组(3)细胞数组*细胞数组的删除:B(:,3)=(?)B2,3=(?)两次操作的区别?B2,2(3)=0,第二章MATLAB程序设计基础,五特殊数组(3)细胞数组*细胞数组中reshape的使用:A=cell(3,4)size(A)B=reshape(A,6,2)size(B),第二章MATLAB程序设计基础,五特殊数组(3)细胞数组细胞数组和数值数组的转换例题:将二维细胞数组F转换为三维数值数据。,第二章MATLAB程序设计基础,一、矩阵8特殊数组(2)细胞数组,F1,1=12;34;F1,2=-10;01;F2,1=78;41;F2,2=4i3+2i;1-8i5;fork=1:4fori=1:2forj=1:2NUM(i,j,k)=Fk(i,j);endendendFNUM,第二章MATLAB程序设计基础,五特殊数组(4)结构细胞数组将结构数组放入细胞数组中,可组成结构细胞数组。,第二章MATLAB程序设计基础,五特殊数组(4)结构细胞数组c_str=cell(1,2);c_str1.label=12/2/94;12/5/94;c_str1.test=47525548;17223511;c_str2.xdata=-0.0030.411.982.1217.11;c_str2.ydata=-351809;c_str2.zdata=0.60.812.23.4;c_str1(1).test(2,2),课后任务,一、掌握数组的创建。二、掌握数组的引用。三、掌握特殊数组的创建和引用。四、掌握数组的其他相关操作。,第二章MATLAB程序设计基础,第四节教学目标MATLAB的运算符(算术、关系、逻辑),第二章MATLAB程序设计基础,一、算术运算符算术运算符+、-表示算术加法和减法*、/表示算术乘法和除法表示左除表示乘方.*表示点乘.表示点左除./表示点右除.表示点乘方,第二章MATLAB程序设计基础,一、算术运算符优先级算术运算符优先级最高,关系运算符次之,而逻辑运算符的优先级最低。实际应用中,可以通过括号来调整运算过程。,第二章MATLAB程序设计基础,一、算术运算符,例题:a=5,b=6,求解以下运算结果。a+b;a-b;a*b;a/b;ab;ab,第二章MATLAB程序设计基础,一、算术运算符,例题:a=135,b=246,求解以下运算结果。a+b;a-b;a*b;ab?a/b;ab;?a.*b;a./b;a.b;a.b,第二章MATLAB程序设计基础,二、关系运算符表示大于=表示大于或等于=表示等于=表示不等于,第二章MATLAB程序设计基础,例题:已知二维数组A=12;23,求A中等于2的元素个数n。A=12;23;B=A=2;n=sum(sum(B);,第二章MATLAB程序设计基础,三、逻辑运算符101和B=111;000,求A,第二章MATLAB程序设计基础,四、逻辑函数,all查看数组的行或者列,每行或列的所有元素为1,结果为1any查看数组的行或者列,每行或列只要有一个元素为1,结果为1exist查看变量或者函数是否存在find找出非零元素的位置标识isempty判断矩阵是否为空矩阵isequal判断对象是否相等isnumeric判断对象是否为数值型bitand按位与bitor按位或bitcmp按位反码,共n位,n必须不小于操作数的二进制位数bitxor按位异或246,求all(A),all(B),all(B,2),any(A),any(B),any(B,2)。A=135;B=135;246;all(A)all(B)all(B,2)any(A)any(B)any(B,2),第二章MATLAB程序设计基础,例题:观察以下函数的返回值:exist(work),exist(myfile),exist(C:windows)。exist(work)exist(exam2_33)exist(C:windows)【说明】表2-3exist函数非常有用,其返回值为数字07,分别表示不同的含义。,第二章MATLAB程序设计基础,例题:数组A=103;301,求find(A),m,n=find(A),m,n,v=find(A)。A=103;301;find(A)m,n=find(A)m,n,v=find(A),第二章MATLAB程序设计基础,例题:已知二维数组A=0.10.6;B=0.10.6;C=TinTin;求isequal(A,B),isequal(A,C),isnumeric(A),isnumeric(B),isnumeric(C)。A=0.10.6;B=0.10.6;C=TinTin;isequal(A,B)isequal(A,C)isnumeric(A)isnumeric(B)isnumeric(C),第二章MATLAB程序设计基础,例题:已知A=20,B=35,求bitand(A,B),bitor(A,B),bitcmp(A,5),bitxor(A,B)。A=20;B=35;bitand(A,B)bitor(A,B)bitcmp(A,5)bitxor(A,B),第二章MATLAB程序设计基础,例题:执行下面的命令,观察运行结果。体会捷径与和捷径或。%可以在exam2_2_gvar1.m中设置断点以更好观察mycmp=(exist(exam2_2_gvar1.m)=2)mycmp=(b=0)|(a/b10),关系及逻辑运算练习1A=1:9,B=10-A,r0=(A0,a=b,a=c,b=c,关系及逻辑运算练习3find(1020;3040=4030;2010)a,b=find(1020;3040=4030;2010)all(12;341)any(12;341)关系及逻辑运算练习4A=-2,-1,0,0,1,2,3L1=(A1)L2=(A0)panduan=fix(n/10)switchpanduancase10,9r=Acase8r=Bcase7r=Ccase6r=Dotherwiser=Eend,clearn=input(输入n=);switchfix(n/10)case10,9r=Acase8r=Bcase7r=Ccase6r=Dotherwiser=Eend,第二章MATLAB程序设计基础,一、MATLAB的三种控制结构3循环结构,循环结构可以由两种语句结构实现:for语句while语句,第二章MATLAB程序设计基础,一、MATLAB的三种控制结构3循环结构,for语句,for循环变量起始值:步长:终止值循环体end,第二章MATLAB程序设计基础,一、MATLAB的三种控制结构,例:使用for结构计算1+2+3+100clearsum=0;fori=1:1:100sum=sum+i;endsum,第二章MATLAB程序设计基础,一、MATLAB的三种控制结构3循环结构,while语句,while表达式循环体end,第二章MATLAB程序设计基础,一、MATLAB的三种控制结构,例:使用while循环计算1+2+3+100clearsum=0;i=0;whileimyfuncHandle=(x)(x2+2*x+1)%创建一个匿名函数myfuncHandle(10),第二章MATLAB程序设计基础,四、函数相关知识2主函数和子函数在一个单个的m文件中我们可以定义多个函数。如果多个函数出现在一个文件中,那么第一个定义的(最好与m文件同名的)函数为主函数,其下面定义的的函数称为子函数。注意:子函数只能被同一文件中的函数调用。子函数不能够由其他文件中的函数调用。,第二章MATLAB程序设计基础,四、函数相关知识2主函数和子函

温馨提示

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

评论

0/150

提交评论