您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > matlab编程入门基础
数学实验Matlab编程入门(一)Matlab编程入门Matlab作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能,同时也可以与C、FORTRAN等高级语言一样进行程序设计利用Matlab的程序控制功能,将相关Matlab命令编成程序存储在一个文件中(M文件),然后在命令窗口中运行该文件,Matlab就会自动依次执行文件中的命令,直到全部命令执行完毕在Matlab程序设计中,要充分利用Matlab数据结构的特点,提高编程效率Matlab编程简介M文件介绍主要内容Matlab编程基础算术运算、关系运算、逻辑运算控制结构:顺序结构、选择结构、循环结构用Matlab语言编写的程序称为M文件M文件以.m为扩展名M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法M文件分类(根据调用方式的不同)Script:脚本文件/命令文件Function:函数文件M文件M文件介绍可以直接运行的M文件M文件的创建的与编辑M文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用Matlab自带的M文件编辑器M文件新建一个M文件菜单操作(FileNewM-File)命令操作(editM文件名)命令按钮(快捷键)打开已有的M文件菜单操作(FileOpen)命令操作(editM文件名)命令按钮(快捷键)双击M文件在命令窗口中输入fcs,即可执行该M文件5(32)9cf例:编写M文件,将华氏温度转化为摄氏温度:编程示例clear;%清除当前工作空间中的所有变量f=input('InputFahrenheittemperature:');c=5*(f-32)/9;fprintf('Thecentigradetemperatureis%g\n',c);新建一个M文件fcs.m,内容如下:M文件运行所产生的变量都驻留在Matlab当前工作空间百分号是注释符M文件必须在当前工作目录下或已存的搜索路径下才能运行M文件介绍主要内容Matlab编程基础算术运算、关系运算、逻辑运算控制结构:顺序结构、选择结构、循环结构关系运算小于=小于等于大于=大于等于==等于~=不等于比较大小,如果结论是真则返回1,否则返回0注意==与=的区别关系操作符可以比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样关系运算符例:关系运算举例2+2==423A=[135;206];B=[310;246];A=Bx=[50;42];x4&与(ElementwiseAND)|或(ElementwiseOR)~非xor(x,y)异或逻辑运算逻辑运算符&&与(Short-circuitAND)||或(Short-circuitOR)A&B等价于and(A,B)A|B等价于or(A,B)~A等价于not(A)逻辑运算逻辑运算符Matlab中的逻辑运算&&与&,||与|的区别如下:A&B(1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。(2)A和B可以为矩阵(e.g.A=[10],B=[00])。A&&B(1)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。(2)A和B不能是矩阵,只能是标量。|与“||”同理。逻辑运算逻辑运算符A&&B首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用,如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A对减少计算量是有好处的。另外这也可以防止类似被0除的错误:flag=denum~=0&&num/denum10ifflag%DoSomethingend上面的表达式就可以防止denum等于0的情况。当然,如果你希望在判断的时候,对A和B表达式都进行计算,就应该使用标准的&或者|。Matlab中的if和while语句中的逻辑与和逻辑或都是默认使用short-circuit形式。逻辑运算逻辑运算符ifflag=denum~=0&&num/denum10%DoSomethingend与ifflag=denum~=0&num/denum10%DoSomethingend执行的结果一样运算对象与或非异或ABA&BA|B~AXor(A,B)000010010111100101111100逻辑运算表在Matlab中,0表示“假”,非零表示“真”all(x)如果向量X中所有元素都非零,则返回1,否则返回0若x为矩阵,则any和all按列运算,返回一个0-1向量逻辑运算相关函数any(x)如果向量X中存在非零元素,则返回1,否则返回0isfinite(x)若x为有限值,返回真值1isinf(x)若x为无穷大,返回真值1isnan(x)若x为不定值,返回真值1isreal(x)若x无虚部,返回真值1isstr(x)若x为一个字符串,返回真值1isempty(x)若x为空,返回真值1一些测试函数isfinite(5)isinf(5)括号幂,点幂正号,负号,逻辑非乘,除,点乘,点除加,减冒号运算关系运算&|&&||运算优先级高低M文件介绍主要内容Matlab编程基础算术运算、关系运算、逻辑运算控制结构:顺序结构:数据输入输出(input、disp、fprintf等)选择结构:if语句、switch语句循环结构:for循环、while循环程序控制结构有三种:顺序结构、选择结构和循环结构任何复杂的程序都由这三种基本结构组成M文件控制流按排列顺序依次执行各条语句,直到程序的最后这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等顺序结构例:A=input('PleaseinputA:')数据的输入:inputA=input(提示信息)其中提示信息为字符串,该命令要求用户输入A的值(可以是数或字符串)inputname=input('What''syourname?')例:输入字符串时必须带单引号单引号的输出disp(X)输出变量X的值,X可以是数值矩阵或字符串一次只能输出一个变量B=[123;456;789];disp(B)disp数据的输出:dispA='Hello,Tom!';disp(A)例:fprintffprintf(fid,format,variables)数据的格式化输出:fprintf按指定的格式将变量的值输出到屏幕或指定的文件fid为文件句柄,若缺省,则输出到屏幕上format用来指定数据输出时采用的格式,包含:普通字符串、格式字符串、转义字符%d(整数)%e(实数:科学计数法形式)%f(实数:小数形式)%g(由系统自动选取上述两种格式之一)%s(输出字符串)\n(换行)\t(制表符)\b(退格)\\(反斜杆)%%(百分号)fprintfa='Hello';b=2.4;c=100*pi;fprintf('a=%s,b=%f,c=%e\n',a,b,c)例:format中的格式字符串要与输出变量一一对应可以没有输出变量fprintf('TodayisMonday\n')例:pause暂停:pausepause或pause(n)若想强行终止正常运行的程序,可以使用Ctrl+c其中n是暂停的时间,以秒为单位若缺省,则将暂停程序,直到用户按任意键后继续pauseoff屏蔽程序中所有pause的作用pauseon打开pause的作用选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab用于实现选择结构的语句有if语句和switch语句。选择结构单分支结构ifexpr(条件)语句组Aendif条件语句ifexpr(条件)语句组Aelse语句组Bend双分支结构ifexpr1(条件1)语句组Aelseifexpr2(条件2)语句组B......elseifexprm(条件m)语句组melse语句组end多分支结构if条件语句根据表达式的不同取值,分别执行不同的语句switchexpr(表达式)casevalue1(表达式1)语句组1casevalue2(表达式2)语句组2......casevaluem(表达式m)语句组motherwise语句组endswitch语句Matlab首先计算expression的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出switch结构switch后面的表达式expression的值可以是一个标量或字符串switch语句otherwise指令可以不出现如果所有的比较结果都为假,则执行otherwise后面的语句组,然后跳出switch结构关于switch语句的几点注解:选择结构的语法格式与C语言对照MATLAB:ifa==bifc~=dmatlab=c;elsematlab=~c;pascal=matlab;endendC:if(a==b){if(c!=d)matlab=c;else{matalb=!c;pascal=matlab;}}MATLAB:C:switch表达式(标量或字符串)switch表达式(标量或字符串))case常量表达式1{case常量表达式1:语句1语句1;break;case常量表达式2case常量表达式2:语句2语句2;break;……otherwise/defaultdefault:语句n语句n}end选择结构的语法格式与C语言对照循环结构是按照给定的条件,重复执行指定的语句。Matlab用于实现循环结构的语句有for语句和while语句循环结构forvar=expr循环体end循环变量表达式expr可以是行向量,也可以是矩阵for循环clear;y=0;n=100;fork=1:ny=y+1/(2*k-1);end例:已知,当n=100时,求y的值11113521yn循环语句可以嵌套使用while循环whileexpr(条件)循环体end不能在for循环体内改变循环变量的值为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免for循环的使用如果预先就知道循环的次数,则可以采用for循环;否则,如果预先无法确定循环的次数,则可以使用while循环。判断表达式是否满足?满足(Y)不满足(N)条件执行结束语句组Awhileend循环结构的语法格式与C语言对照MatlabCwhilea==bwhile(a==b)c=c+1;{c+=1;}endwhile循环的格式为:for循环的格式为:MatlabCfori=1:2:100for(i=1;i=100;i=i+2)c(i)=c(i)+1;{endc(i)=c(i)+1;}MATLAB中循环变量的步长缺省值是1。步长可以在正实数或负实数范围内任意指定,循环变量的值大于(步长为负数时小于)终止值时,循环结束。循环结构的语法格式与C语言对照break和continuebreak语句用于终止循环的执行,即跳出最内层循环continue语句用于结束本次循环,进行下一次循环break和continue一般与if语句配合使用其它流控制语句returnreturn语句用于退出正在运行的脚本或函数,通常用在函数文件中编程示例数论中的一个有趣问题:3n+1问题:任取一个正整数,如果是偶数,用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
本文标题:matlab编程入门基础
链接地址:https://www.777doc.com/doc-4192411 .html