Matlab编程必备手册北京索为高科系统技术有限公司雒海涛2011-02-11编程格式规范这儿把编程格式规范放在最前面希望大家在学习之前认真阅读该部分,对后面的matlab编程大有裨益。一.编程原则1.正确:能准确实现原仿真目的;2.高效:循环向量化,少用或不用循环,尽量调用MATLAB自带函数;3.清晰:养成良好的编程习惯,程序具有良好的可读性;4.通用:程序具高度的可移植性,同时易于扩展,避免同学之间重复工作。二.编程规则1.定义变量,以英文单词小写缩写开头表示类别名,再接具体变量的英文名称英文单词,具体变量首字母大写。教研室常用类别缩写:最大值max,最小值min例如:定义变量存贮临时数组TempArray的最大值maxTempArray依照工程大小确定变量名长短,小范围应用的变量应该用短的变量名。定义务必清晰,避免混淆。2.循环变量使用常用变量i,j,k;程序中使用复数时,采用i,j以外的循环变量以避免和虚数单位冲突,同时要在注释部分说明变量意义。3.程序应高内聚、低耦合、模块函数化,便于移植、重复使用。4.使用if语句判断变量是否等于某一常数时,将常变量数写在等号之前,常数写在等号之后。例如判断变量a是否等于100写作ifa==100。5.用常数代替数字,少用或不用数字。例如上一条:写作ifa==100就不标准。应先定义meanConst=100;为期望常量。同时在注释中说明,然后在程序部分写作:ifa==const;如果要修改期望常量的话,只要在程序定义部分修改就可以,不必再逐行修改,此外还易于在该程序的基础上增加其他功能。三.注释规则1.注释要用汉语,且用一个“%”连接文字作为注释开始标志。程序的起始要注明作者、时间、程序功能、复杂的算法需要加上流程说明。对于比较复杂的程序,由几个人协作完成,要在每一个模块的起始分别注明作者、时间、程序功能。注释采用matlab的注释符号。同时第一行增加关键字,便于将来程序文件较多时,使用help和lookfor查找。例如:%关键字%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%此处为函数名,如果不是函数文件就取消此行%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%创建人:%日期:%修改人:%日期:%函数变量及功能的简单描述%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2.对于所有有物理含义的变量、常量、数据结构声明,在声明时都必须加以注释,说明其物理含义,单位。3.源程序有效注释量必须在20%以上,边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除。注释语言必须准确、易懂、简洁,尽量不要用缩写。如果接手前人的程序,在维护过程中需要对变量以及源程序作部分修改及补充,在修改变量及程序注释的同时需要在修改的位置标明修改人的名字及修改日期。对原程序修改要及时修改注释。否则有注释比没有注释还要糟糕。4.程序内部不同功能模块要空一行,同时附注释说明模块的作用、功能。这样程序结构清晰易懂,便于同学间学习交流。例如:…模块一…代码…此处为空行%注释说明下一模块的功能%%%%%%%…模块二…代码…5.一行代码不宜过长,应限制在80列之内。一旦有过长代码须用MATLAB转接符号“...”连接两行代码,以便于同学之间打印程序交流。因为大多是打印机的行长度为80。例:第一行代码nVariable=1+1+1++1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1...第二行代码+1+1+1;编程入门一.前言Matlab作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和C、FORTRAN等高级语言一样进行程序设计。利用Matlab的程序控制功能,可以将有关Matlab命令编成程序存储在一个文件中(M文件),然后在命令窗口中运行该文件,Matlab就会自动依次执行文件中的命令,直到全部命令执行完毕。在Matlab程序设计中,要充分利用Matlab数据结构的特点,提高编程效率。二.M文件M文件以.m为扩展名。M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。事实上,Matlab提供的内部函数以及各种工具箱,都是利用Matlab语言开发的M文件。用户也可以结合自己的工作需要,开发自己的程序或工具箱。M文件根据调用方式的不同可以分为两类:Script:脚本文件/命令文件,Function:函数文件。它们均是普通的ASCII码构成的文件。M脚本文件中包含一族由MATLAB语言所支持的语句,它类似于DOS下的批处理文件,它的执行方式很简单,用户只需在MATLAB的提示符下键入该M文件的文件名,这样MATLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB的工作空间。M函数格式是MATLAB程序设计的主流,一般情况下,不建议您使用M脚本文件格式编程。MATLAB的M函数是由function语句引导的,其基本格式如下:function[返回变量列表]=函数名(输入变量列表)注释说明语句段,由%引导输入、返回变量格式的检测函数体语句建议:M文件名与文件内主函数名相同(matlab是以文件名做区分的,当然函数名和文件名也可以不同)。三.程序实例1.脚本文件举例:编写一个脚本文件将华氏温度转化为摄氏温度。5(32)9=−cf新建一个M文件f2cs.m,内容如下:clear;%清除当前工作空间中的变量f=input('PleaseinputFahrenheittemperature:');c=5*(f-32)/9;fprintf('Thecentigradetemperatureis%g\n',c);在命令窗口中输入f2cs,即可执行该M文件。2.function文件举例:计算两个数字之和。新建一个m文件,命名为MySum.m,内如如下:functionrt=MySum(x,y)rt=x+y;end在命令窗口输入MySum(10,20)即可输出计算结果。程序控制结构一.顺序结构按排列顺序依次执行各条语句,直到程序的最后,这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。二.选择结构选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab用于实现选择结构的语句有if语句和switch语句。If条件语句单分支结构ifexpression(条件)statements(语句组)end双分支结构ifexpression(条件)statements1(语句组1)elsestatements2(语句组2)end多分支结构ifexpression1(条件1)statements1(语句组1)elseifexpression2(条件2)statements2(语句组2)......elseifexpressionm(条件m)statementsm(语句组m)elsestatements(语句组)endif语句举例数论中的一个有趣问题:任取一个正整数,如果是偶数,用2除,如果是奇数,用3乘再加1,反复这个过程,直到所得到的数为1。问:是否存在使该过程永不中止的整数?while1n=input('Pleaseentern(nonpositivequit):');ifn=0,break;endnt=n;whilen1ifrem(n,2)==0n=n/2;elsen=3*n+1;endfprintf('\nn=%d',n);endfprintf('\nn=%disnotweneed!continue...\n',nt);endswitch语句根据表达式的不同取值,分别执行不同的语句。switchexpression(表达式)casevalue1(表达式1)statement1(语句组1)casevalue2(表达式2)statement2(语句组2)......casevaluem(表达式m)statementm(语句组m)otherwisestatement(语句组)endMatlab首先计算expression的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出switch结构。如果所有的比较结果都为假,则执行otherwise后面的语句组,然后跳出switch结构。otherwise指令可以不出现。switch后面的表达式expression的值可以是一个标量或字符串。三.循环结构循环结构是按照给定的条件,重复执行指定的语句。Matlab用于实现循环结构的语句有for语句和while语句for循环forvariable=expressionstatement(循环体)end表达式expression可以是行向量,也可以是矩阵while循环whileexpression(条件)statement(循环体)end循环语句可以嵌套使用不能在for循环体内改变循环变量的值为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免for循环的使用如果预先就知道循环的次数,则可以采用for循环;否则,如果预先无法确定循环的次数,则可以使用while循环。四.其它流控制语句break和continuebreak语句用于终止循环的执行,即跳出最内层循环continue语句用于结束本次循环,进行下一次循环break和continue一般与if语句配合使用returnreturn语句用于退出正在运行的脚本或函数,通常用在函数文件中。Matlab常用函数及函数实例一.常用函数列表===============================================小整理:MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phaseangle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示rats(x):将实数x化为多项分数展开sign(x):符号函数(Signumfunction)。当x0时,sign(x)=-1;当x=0时,sign(x)=0;当x0时,sign(x)=1。rem(x,y):求x除以y的馀数gcd(x,y):整数x和y的最大公因数lcm(x,y):整数x和y的最小公倍数exp(x):自然指数pow2(x):2的指数log(x):以e为底的对数,即自然对数或log2(x):以2为底的对数log10(x):以10为底的对数===============================================小整理:MATLAB常用的三角函数sin(x):正弦函数cos(x):馀弦函数tan(x):正切函数asin(x):反正弦函数acos(x):反馀弦函数atan(x):反正切函数atan2(x,y):四象限的反正切函数sinh(x):超越正弦函数cosh(x):超越馀弦函数tanh(x):超越正切函数asinh(x):反超越正弦函数acosh(x):反超越馀弦函数atanh(x):反超越正切函数====================================================小整理:适用於向量的常用函数有:min(x):向量x的元素的最小值max(x):向量x的元素的最大值mean(x):向量x的元素的平均值median(x):向量x的元素的中位数std(x):向量x的元素的标准差diff(x):向量x的相邻元素的差so