1、精选课件ppt2 参考 电子工业出版社 MATLAB实用教程P172-204 用的为矩阵的提法 郑阿奇主编 2005年5月第1次印刷精选课件ppt3MATLAB提供了大量的常用数学函数,借助于提供了大量的常用数学函数,借助于MATLAB提供的各种运算符和丰富的常用数学提供的各种运算符和丰富的常用数学函数命令,就有可能编写出功能强大的应用程序。函数命令,就有可能编写出功能强大的应用程序。知识点:常用的数学函数常用的数学函数m文件和文件和m函数函数程序设计初步程序设计初步文件操作的有关函数文件操作的有关函数精选课件ppt4一、常用的数学函数一、常用的数学函数精选课件ppt5三三角角函函数数sin正
2、弦函数正弦函数sec正割函数正割函数sinh双曲正弦函数双曲正弦函数sech双曲正割函数双曲正割函数asin反正弦函数反正弦函数asec反正割函数反正割函数asinh反双曲正弦函数反双曲正弦函数asech反双曲正割函数反双曲正割函数cos余弦函数余弦函数cot余切函数余切函数cosh双曲余弦函数双曲余弦函数coth双曲余切函数双曲余切函数acos反余弦函数反余弦函数acot反余切函数反余切函数acosh反双曲余弦函数反双曲余弦函数acoth反双曲余切函数反双曲余切函数tan正切函数正切函数csc余割函数余割函数tanh双曲正切函数双曲正切函数csch双曲余割函数双曲余割函数atan反正切函数反
3、正切函数acsc反余割函数反余割函数atanh反双曲正切函数反双曲正切函数acsch反双曲余割函数反双曲余割函数atan2四象限反正切函数四象限反正切函数精选课件ppt6其其他他常常用用数数学学函函数数abs实数的绝对值以实数的绝对值以及复数的模及复数的模besselh第三类第三类Bessel函函数数conj求复数的共轭求复数的共轭besseli,besselk修正的修正的Bessel函函数数real求复数的实部求复数的实部besselj,bessely第一类第一类Bessel函函数数imag求复数的虚部求复数的虚部beta,betainc,betalnBeta函数函数sqrt求平方根求平方根
4、ellipj椭圆椭圆Jacobi函数函数exp指数函数指数函数ellipke第一、二类完全第一、二类完全椭圆积分椭圆积分log自然对数自然对数erf,erfc,erfcx,erfinvError函数函数log10常用对数常用对数gamma,gammainv,gammmalnGamma函数函数log2以以2为底的对数为底的对数legendre勒让德函数勒让德函数airyAiry函数函数lcm最小公倍数最小公倍数sign符号函数符号函数gcd最大公约数最大公约数精选课件ppt7二、m文件与m函数精选课件ppt8M文件工作方式,是指将要执行的命令全部写在一个文文件工作方式,是指将要执行的命令全部写在
5、一个文本文件中,这样既能使程序显得简洁明了,又便于对程序本文件中,这样既能使程序显得简洁明了,又便于对程序的修改和维护。的修改和维护。M文件直接采用文件直接采用MATLAB命令编写,就象在命令编写,就象在MATLAB的的命令窗口直接输入命令一样。因此调试起来也十分方便,命令窗口直接输入命令一样。因此调试起来也十分方便,并且增强了程序的交互性。并且增强了程序的交互性。利用利用M文件,还可以根据自己的需要编写一些函数,这文件,还可以根据自己的需要编写一些函数,这些自定义的函数也可以象些自定义的函数也可以象MATLAB提供的函数一样进行调提供的函数一样进行调用。从某种意义上说,这也是对用。从某种意义
6、上说,这也是对MATLAB的二次开发。的二次开发。M文件有两种形式:文件有两种形式:(a)命令方式或脚本方式命令方式或脚本方式(b)函数文件形式函数文件形式两种形式的文件扩展名均为两种形式的文件扩展名均为.m,所以称为,所以称为m文件。文件。精选课件ppt9M文件:当遇到输入命令较多或需要重复输入命令时,当遇到输入命令较多或需要重复输入命令时,利用利用m文件就显得很方便了。即将所有要执行的文件就显得很方便了。即将所有要执行的命令按顺序放到一个扩展名为命令按顺序放到一个扩展名为.m的文本文件中。的文本文件中。以后每次运行时,只须在以后每次运行时,只须在MATLAB命令窗口输入命令窗口输入m文件的
7、文件名即可。文件的文件名即可。(M文件为文件为ASCIIA码文件码文件)注意:m文件名不应该与文件名不应该与MATLAB的内置函数名的内置函数名以及工具箱中的函数名重名。以免发生执行错误以及工具箱中的函数名重名。以免发生执行错误命令的情况。命令的情况。精选课件ppt10M函数:函数:M函数是一种特殊的函数是一种特殊的m文件。其常见格式如下:文件。其常见格式如下:说明:说明:Function 返回变量列表函数名(输入变量列表)返回变量列表函数名(输入变量列表)注释说明注释说明函数体语句函数体语句输入变量和输出变量的个数由输入变量和输出变量的个数由MATLAB本身提供的两本身提供的两个保留变量个保
8、留变量nargin和和nargout来给出的。来给出的。输入变量要用逗号隔开;输入变量要用逗号隔开;输出变量多于输出变量多于1个时,要用方括号个时,要用方括号“”括起来。括起来。注释说明部分可以用注释说明部分可以用help命令显示命令显示M函数的调用方法同一般的函数的调用方法同一般的MATLAB函数函数精选课件ppt11说明:M函数相当于对函数相当于对MATLAB进行二次开发,其作进行二次开发,其作用与其它高级语言中的子程序的作用相同,都是用与其它高级语言中的子程序的作用相同,都是为了实现特定目的而由用户自己编写的子函数。为了实现特定目的而由用户自己编写的子函数。精选课件ppt12M函数文件与
9、命令文件有鲜明的区别:m函数文件的第一行必须包含函数文件的第一行必须包含function字符,而命令文件无字符,而命令文件无此要求;此要求;m函数文件的第一行必须指定函数名、输入参数和输出参函数文件的第一行必须指定函数名、输入参数和输出参数;而命令文件无此要求;数;而命令文件无此要求;一个函数文件可以有一个函数文件可以有0个、个、1个或多个输入参数和返回值;个或多个输入参数和返回值;函数文件要在文件的开头定义函数名,如函数文件要在文件的开头定义函数名,如 function y1,y2=func(x,a,b,c)且该函数文件名必须与定义的函数名相同,即且该函数文件名必须与定义的函数名相同,即fu
10、nc.m;而命令文件无此要求;而命令文件无此要求;命令文件的变量在文件执行结束后仍然保持在内存中而命令文件的变量在文件执行结束后仍然保持在内存中而不会丢失;而函数文件的变量仅在函数运行期间有效(除不会丢失;而函数文件的变量仅在函数运行期间有效(除非用非用global把变量说明成全局变量,否则函数文件中的变把变量说明成全局变量,否则函数文件中的变量均为局部变量),当函数运行完毕后,这些变量也就消量均为局部变量),当函数运行完毕后,这些变量也就消失了。失了。精选课件ppt13 函数文件编制好后,就可调用函数进行计算函数文件编制好后,就可调用函数进行计算了。如上面定义了。如上面定义ffib函数后,调
11、用它求小于函数后,调用它求小于2000的的Fibonacci数。数。函数调用的一般格式是:函数调用的一般格式是:输出实参表输出实参表=函数名函数名(输入实参表输入实参表)精选课件ppt14例1:编写函数文件求小于任意自然数编写函数文件求小于任意自然数n的的Fibonacci数列各项。数列各项。function f=ffib(n)%求求Fibonacci数列的函数文件数列的函数文件%f=ffib(n)f=1,1;i=1;while f(i)+f(i+1)n f(i+2)=f(i)+f(i+1);i=i+1;end精选课件ppt15 将以上函数文件以文件名将以上函数文件以文件名ffib.m存盘,然
12、后存盘,然后在在MATLAB命令窗口输入以下命令,可求小命令窗口输入以下命令,可求小于于2 000的的Fibonacci数。数。ffib(2000)精选课件ppt16精选课件ppt17M函数的递归调用在调用函数的过程中出现直接或间接地调用该函数本身在调用函数的过程中出现直接或间接地调用该函数本身的现象,称为函数的递归调用。的现象,称为函数的递归调用。MATLAB语言允许函数的递归调用。若函数语言允许函数的递归调用。若函数A在执行过在执行过程中又直接调用函数程中又直接调用函数A本身,则为函数的直接递归调用;本身,则为函数的直接递归调用;若函数若函数A在执行过程中调用函数在执行过程中调用函数B,而
13、函数,而函数B中又调用函数中又调用函数A,则称为间接递归调用。,则称为间接递归调用。在递归调用的函数中,一般要有跳出递归调用的语句,在递归调用的函数中,一般要有跳出递归调用的语句,否则函数会一直循环下去(死循环)。否则函数会一直循环下去(死循环)。精选课件ppt18例2 利用函数的递归调用,求n!function f=factor(n)if n=1 f=1;else f=factor(n-1)*n;end return;%返回返回精选课件ppt19 在 命 令 文 件在 命 令 文 件 mai n2.m中 调 用 函 数 文 件中 调 用 函 数 文 件factor.m:for i=1:10
14、fac(i)=factor(i);end fac精选课件ppt20精选课件ppt21三、程序的结构程序的结构一般分为三种:程序的结构一般分为三种:由于由于MATLAB是由是由C语言编写的,所以在语法方面与语言编写的,所以在语法方面与C语言极为相似,但比语言极为相似,但比C语言要简单得多。语言要简单得多。顺序结构顺序结构 分支结构分支结构 循环结构循环结构精选课件ppt221、顺序结构、顺序结构顺序结构是指程序由依次按照顺序执行的各条语句组成。顺序结构是指程序由依次按照顺序执行的各条语句组成。语句在程序中的位置就是程序的执行顺序。语句在程序中的位置就是程序的执行顺序。例如:例如:a=1;b=2;
15、c=3;d=a+b+c!当MATLAB执行以上程序时,逐行运行程序中的语句。精选课件ppt23精选课件ppt242、分支结构 分支结构又称为条件控制语句。用于对某些条分支结构又称为条件控制语句。用于对某些条件进行判断,然后再根据判断的结果进行不同的件进行判断,然后再根据判断的结果进行不同的后处理。后处理。MatLab提供了提供了if-else-end和和switch-case-end两两种分支结构。种分支结构。精选课件ppt25if 表达式表达式 执行语句执行语句end if-else-end分支结构分支结构(三种)if 表达式表达式 语句语句1else 语句语句2endif 表达式表达式1
16、语句语句1elseif 表达式表达式2 语句语句2elseif 表达式表达式3 语句语句3.else 语句语句nend123先判断表达式先判断表达式1,若成立则执行语句,若成立则执行语句1;执;执行完语句行完语句1后便终止该分子结构,接着执行后便终止该分子结构,接着执行end以后的语句(即是后面有些表达式成立以后的语句(即是后面有些表达式成立仍会被忽略)。若表达式仍会被忽略)。若表达式1不成立,则判断不成立,则判断表达式表达式2,。精选课件ppt26例:编一函数文件用于计算分段函数:编一函数文件用于计算分段函数:0 x01 0 x12 1x225 x2yxx其程序如下:其程序如下:functi
17、on y=xy(x)if x=0 y=0;elseif x=1 y=1;elseif x=2 y=2*x;else y=2*x+5;end分支结构中的表达分支结构中的表达式既可以是标量间式既可以是标量间的计算,也可以是的计算,也可以是矩阵间的计算。矩阵间的计算。精选课件ppt27精选课件ppt28例:分支结构中的表达式为矩阵间的运算例:分支结构中的表达式为矩阵间的运算A=1 2 3;4 5 6;B=1.5 2 3.4;4.3 4.5 5.4;if AB disp(Matrix A Matrix B);elseif AB+1 disp(Matrix A Matrix B+1);else disp
18、(Not defined);end精选课件ppt29该种分支结构能实现多分支功能。虽然该种分支结构能实现多分支功能。虽然if-else-end分支分支结构的第三种形式也可以实现多分支结构,但没有结构的第三种形式也可以实现多分支结构,但没有switch-case-end分支结构这么简单、易于维护。分支结构这么简单、易于维护。switch-case-end分支结构分支结构switch-case-end分支结构的分支结构的表达形式为:表达形式为:switch 表达式case 常量表达式1 语句块1case 常量表达式2 语句块2.case 常量表达式n 语句块notherwise 语句块n+1end
19、说明:switch后面的表达式可以是任意类型,如字符串、矩阵、标量等;若表达式的值与case后面的某个常量表达式相等,则执行该case后的语句块。若表达式的值和所有常量表达式的值都不相同,则执行otherwise后面的语句块。精选课件ppt30例:已知收入和税收之间的关系,编制函数文件,求收入与税收之间的关系。function y=tax(x)a=fix(x/10000);switch acase 0,1,2,3,4 y=x*0.05;case 5,6,7,8,9 y=x*0.1;case 10,11,12,13,14 y=x*0.2;otherwise y=x*0.35end收入收入s税率(
20、)税率()s555s101010s1520s1535精选课件ppt313、循环结构 循环是计算机解决实际问题的主要手段。循循环是计算机解决实际问题的主要手段。循环语句也涉及判断,只有满足一定的条件才执行环语句也涉及判断,只有满足一定的条件才执行循环,否则就会跳出循环。循环,否则就会跳出循环。MATLAB提供两种循环:提供两种循环:for-end循环循环和和while-end循环循环。精选课件ppt321、for-end循环for 循环变量名=循环变量表达式 语句块end说明:a.在循环变量表达式中给出循环变量的初值、步长和终值。通常采用冒号来定义,如i:j:k或i:jb.在循环次数已知的条件下
21、,使用该结构c.循环可以嵌套:for var1=exp1 语句块1 for var2=exp2 语句块2 end 语句块3end精选课件ppt33例:for i=1:10 x(i)=i;y(i)=i*i;end说明:为了得到高效代码,提高运算速度,应尽量提高代码的向量化程度,而避免使用循环结构。精选课件ppt342、while-end循环while 表达式 语句块end说明:a.表达式一般由逻辑运算和关系运算以及一般的运算组成,表达式一般由逻辑运算和关系运算以及一般的运算组成,用于判断循环是否继续进行。用于判断循环是否继续进行。b.在循环次数事先不好确定的条件下,使用该在循环次数事先不好确定的
22、条件下,使用该while循环方循环方便便c.在while循环中,只要表达式的值非0,即为逻辑“真”,则程序就一直循环下去,直到表达式的值为0才停止循环精选课件ppt35while-end循环示例例:例:Fibonacci数组的元素满足数组的元素满足Fibonacci规则:规则:ak+2=ak+ak+1,且,且a1=a2=1。现要求该数组中第一个大于现要求该数组中第一个大于10000的元素。的元素。a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i);i=i+1;endi,a(i)精选课件ppt36精选课件ppt374、Try-Catch结构
23、try 语句块语句块1catch 语句块语句块2end语法:a.语句块1总被执行。若正确,则跳出此结构;若在执行语句块1时出现了错误,则执行语句块2。b.当执行语句块2时又出错,MATLAB将终止该结构;c.可以调用lasterr函数查询出错的原因,若该函数的运行结果为一个空串,则表明语句块1被成功执行了。说明:精选课件ppt38例:对(对(33)魔方阵的行进行援引,当)魔方阵的行进行援引,当“行下标行下标”超出魔方阵的最大行数时,将改向对最后一行的超出魔方阵的最大行数时,将改向对最后一行的援引,并显示援引,并显示“出错出错”警告。警告。clearN=4;a=magic(3);try A_N=a(N,:),catch a_end=a(end,:),endlasterr精选课件ppt48结 束 语l本课程基于matlab语言基础,望大家以后进一步学习,方能编写出高质量m文件,以适应高科技的需要。l望你们今后能成为matlab高手。精选课件ppt4950此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!