您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > MATLAB编程入门
第二章MATLAB程序设计(1)MATLAB的输入与输出语句输入语句输入数值、行向量、列向量、矩阵x=input('pleaseinputanumber:')pleaseinputanumber:22x=22输入字符串x=input('pleaseinputastring:')pleaseinputastring:’thisisastring’x=thisisastringMATLAB的输入与输出语句输出语句自由格式(disp)•disp(23+454-29*4)•361•disp([112233;445566;778899])•112233•445566•778899•disp('thisisastring')•thisisastringMATLAB的输入与输出语句格式化输出(fprintf)•fprintf('Theareais%8.5f\n',area)%注意输出格式前须有%符号,•Theareais12.56637%输出值为8位数含5位小数错误消息显示命令•error('thisisanerror')•thisisanerrorMATLAB中的控制结构循环结构循环结构允许重复执行一系列语句,需要被重复执行的语句称为循环体。循环结构的执行方式为首先判断是否达到循环终止条件,如果没有,则继续执行循环体,如果已经达到则跳出循环。for循环while循环MATLAB中的控制结构选择结构if结构switch结构try/catch结构其他流程控制break语句continue语句return语句for循环for循环的语法forindex=expressionloopbodyendindex是循环变量,expression是循环控制表达式,在for和end之前的执行语句为循环体loopbodyfor循环for循环的执行顺序变量index读取表达式expression,其在一般情况下是一个向量,用冒号表达式表示为start:increment:end,若采用默认的步长1,则表示为start:end;在这种情况下,循环变量index每次从向量expression中读取一个元素,然后程序执行循环体(loopbody),直至向量expression中所有元素读取完毕一般而言,向量expression中有多少元素,循环体就执行多少次特别的,如果expression是一个矩阵,则index每次读取矩阵的一列,直至所有列读取完毕,亦即循环次数为矩阵的列数for循环利用for循环求阶乘6!下面的循环控制表达式将会产生行向量[654321],循环变量i依次读取这些数值实现阶乘运算。N=6;S=1;fori=N:-1:1S=S*i;endSS=720for循环循环的嵌套for循环可以嵌套使用,如果一个循环完全出现在另一个循环当中,我们称这两个循环为带嵌套的循环。下面的例子用两重for循环嵌套来计算九九乘法表并打印结果fori=1:9forj=1:ifprintf('%d*%d=%d',i,j,i*j);endfprintf('\n');endwhile循环while循环的语法while为条件循环语句。while循环的循环终止条件通常是对循环条件表达式的判断,只要循环条件表达式为真,则循环体就重复执行,直到循环条件表达式为假。所以while循环的次数不确定。while循环的语法是:whileconditionloopbodyendwhile循环利用while求EPS(eps)EPS=1;while(1+EPS)1EPS=EPS/2;endEPS=EPS*2EPS=2.2204e-016while循环利用while求EPS(eps)eps是一个加1后而使结果以有限精度大于1的最小数值。这里我们用大写EPS是为了避免MATLAB中常量eps的值被覆盖。在本例中EPS以1开始。只要(1+EPS)1为真(非零),就一直求while循环内的命令值。由于EPS不断地被2除,EPS逐渐变小以致于EPS+1不大于1。(记住,发生这种情况是因为计算机使用固定数的数值来表示数。MATLAB用16位,因此,我们只能期望EPS接近10-16。)在这一点上,(1+EPS)1是假(零),于是while循环结束。最后,EPS与2相乘,因为最后除2使EPS太小。while循环利用while循环求Fibonacci数列的小于100的项Fibonacci数列指的是这样的一个数列:1、1、2、3、5、8、13、21、…这个数列从第三项开始,每一项都等于前两项之和。那么我们可以通过循环的方式来实现这个数列的求解,且终止条件设为要求取数列的最后一项必须小于100,因而可以在语句段中设置一个flag,判断已经求得数列的最后两项之和是否超过100,如果没有,则循环继续,如果已经超过则循环终止,那么可以在MATLAB命令窗口输入while循环利用while循环求Fibonacci数列的小于100项f(1)=1;f(2)=1;%Fibonacci数列的前两项i=2;%项数标志n=2;%循环终止判断标志变量while(n100)%终止条件是循环终止判断标%志变量小于100i=i+1;f(i)=n;%Fibonacci数列项的求取方法n=f(i)+f(i-1);%循环终止判断变量已求取数%列的最后两项的和endMATLAB中的控制结构选择结构if结构switch结构try/catch结构if结构if-end结构ifconditionstatementsend其中当条件表达式condition的值为真(非0)时执行语句段statements,否则不执行。例如我们判断一个学生是否通过某课程是根据其到课率attendance和成绩grade来判断,可以设置if判断语句如下:if((attendance=0.90)&&(grade=60))pass=1;endif结构if-else-end结构ifconditionstatements_1elsestatements_2end其中当条件表达式condition的值为真(非0)时执行语句段statements_1,否则则执行语句段statements_2。if结构if-else-end结构例如我们利用rand()函数产生随机数x,而后判断其与0.5的大小并打印结果的语句段如下:x=rand();ifx0.5fprintf('xisgreaterthan0.5\n');elsefprintf('xislessthan0.5\n')endif结构if-elseif-else-end结构ifcondition_1statements_1elseifcondition_2%这里可以有多个elseifstatements_2elsestatements_3end在这种结构控制下,当运行到程序的某一条条件表达式为真(非0)时,则执行与之相关的语句段,而后系统不再检查其他的条件表达式,系统将跳过if结构中的其他语句。if结构if-elseif-else-end结构需要注意的是,在一个if结构中,可以有任意个elseif语句,但else语句最多有一个或者没有。if(b^2-4*a*c)0fprintf('Theequationhastwocomplexroots.\n');elseif(b^2-4*a*c)==0fprintf('Theequationhastwoidenticalrealroots.\n');elsefprintf('Theequationhastwodistinctrealroots.\n');endif结构if的嵌套使用if结构的使用非常灵活,需要注意的是,它必须含有一个if语句和一个end语句。中间可以有任意个elseif语句,也可以有一个else语句。这样我们可以根据实际的需要确定选择哪种结构。同时,if语句也是可以嵌套使用的,如果if结构完全是另一个if结构的一个语句块,我们就称两者为嵌套关系.if结构if的嵌套使用例如二重嵌套的一般语法格式如下:ifcondition_1statements_1ifcondition_2statements_2endend在大多数情况下,执行一个算法,即可以用多个elseif语句,也可以用if语句的嵌套。用户可以根据喜好选择相应的方式。switch结构switch结构被称为开关结构。用户可以根据一个单精度整形数,字符或逻辑表达式的值来选择执行特定的语句段。其基本语法格式为:switch(switch_expr)casecase_expr_1,statements_1casecase_expr_1,statements_2…otherwise,statements_otherendswitch结构用法在这个控制结构中,如果switch_expr的值与case_expr_1相符,那么第一个语句段statements_1将会被执行,然后程序将会跳转到switch结构结束语句end后的第一个语句。如果switch_expr的值与case_expr_2相符,那么第二个语句段将会被执行,然后程序将会跳到switch结构结束语句end后的第一个语句。在这个结构中,otherwise语句段是可选的。如果它存在的话,当switch_expr的值与其他所有的选项都不相符时,语句段statements_other将会被执行。如果它不存在,且witch_expr的值与所有的选项都不相符时,结构中的任何一个语句段都不会被执行。switch结构多值匹配需要注意的是,如果switch_expr有很多值可以导致相同代码的执行,那么这些值可以括在同一括号内,如果这个switch表达式和括号中任何一个值相匹配,那么这个语句段将会被执行switch(switch_expr)case{cas_1,case_2,case_3},statementscase{cas_4,...}...otherwise,statements_otherendswitch结构例子使用switch结构设计MATLAB程序,通过输入英文星期单词,将其转换成相应的中文,例如输入“Sunday”,输出“星期日”day=input('请输入英文日期如:Sunday\n','s');switchdaycase{'Sunday','sunday'}disp('星期日');case{'Monday','monday'}disp('星期一');case{'Tuesday','tuesday'}disp('星期二');switch结构例子case{'Wednesday','wednesday'}disp('星期三');case{'Thursday','thursday'}disp('星期四');case{'Friday','friday'}disp('星期五');case{'Saturday','saturday'}disp('星期六');otherwisedisp('Error');endtry/catch结构用法try/catch结构是选择结构的一种特殊形式,用于捕捉错误。一般地,当一个MATLAB程序在运行时遇到了一个错误,这个程序就会中止执行。try/catch结构修改了这个默认行为如果一个错误发生在这个结构的try语句块中,那么程序将会执行catch语句块,程序将不会中断。它将帮助程序员控制程序中的错误,而不用使程序中断。try/catch结构的基本语法如下:trystatements_trycatchstatements_catchendtry/catch结构当程序运行到try/catch语句段,在try语句段statements_try中的语句将会被执行。如果没有错误出现,程序将跳过catch语句段。如果错误发生在语句段statements_try,那么程序将中止执行try语句块,并
本文标题:MATLAB编程入门
链接地址:https://www.777doc.com/doc-4192408 .html