《matlab2013教程第三章选择语句.ppt》由会员分享,可在线阅读,更多相关《matlab2013教程第三章选择语句.ppt(28页珍藏版)》请在三一办公上搜索。
1、2023年11月8日,第1页,第3章 选择语句,if语句和switch语句menu函数is函数for语句,主要内容,任何计算机语言都有三种基本结构:顺序结构:无控制语句分支结构:if,switch循环结构:for,while,1、顺序结构:无控制语句,按照顺序从头至尾地执行程序中的各条语句。顺序结构一般不包含其他任何子语句或控制语句。,例如:n=0:100;x=sin(2*pi*0.01*n);plot(x);hold on stem(x,r);grid,分支结构:if,switch,if和switch语句用于根据条件选择执行相应的语句。,1、if 语句(适合分支少),if 语句根据逻辑表达式
2、的值来确定是否执行紧接的语句体。常见的调用格式有:,格式1:if 表达式 语句 end,格式2:if 表达式 语句1 else 语句2 end,Fenzi=input(Please input enter the FENZI:);Fenmu=input(Please input enter the FENMU:);if(Fenmu=0)disp(Sorry The Fenmu can not be zero!);else fprintf(The result is%.2f.n,Fenzi/Fenmu);end,写一个脚本,提示用户输入分数的分子和分母。如果分母是0,则打印错误信息,指出0不能做
3、分母。如果分母不是0,则打印分数结果。,格式3:if 表达式1 语句1 elseif 表达式2 语句2 else 语句3 end,例如:判断输入数的奇偶性n=input(n=);if rem(n,2)=0 display(n是偶数)else display(n是奇数)end,2、switch语句(适合分支多),格式:switch 表达式(标量或表达式)case 值1 语句1 case 值2 语句2 otherwise 语句n end,switch语句和if语句类似。Switch语句根据变量或表达式的取值不同分别执行不同的命令。,例如:根据菜单选择显示不同的函数x=menu(波形,正弦,余弦,正
4、切,余切);switch xcase 1 ezplot(sin)case 2 ezplot(cos)case 3 ezplot(tan)case 4 ezplot(cot)end,menu函数,格式:menu(标题,标签1,标签2,标签3,.),3、for语句 常用于计数循环,格式:for 变量=初值:增量:终值 语句 end,例如:求100!x=1;for k=1:1:100 x=x*k;end,例:已知,当n=100时,求y的值。程序如下:y=0;n=100;for i=1:n y=y+1/(2*i-1);end,在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由
5、下面的程序来代替:n=100;i=1:2:2*n-1;y=sum(1./i);,for语句更一般的格式为:for 循环变量=矩阵表达式 循环体语句 end执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。,例:写出下列程序的执行结果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;end disp(s);,4、while 语句 常用于条件循环,格式:while 表达式 语句 end,例如:计算1,1000的和x=1;while x=1000 x=x+1;end,表达式成立(为真)时,一直执行语句
6、,否则跳出循环.,clear;x=input(Enter a maximum temp:);while(x 20)x=input(Error!Enter a maximum temp:);end;i=0;fprintf(%6s%6sn,F,C);while(5/9*(i-32)x)fprintf(%6.1f%6.1fn,i,5/9*(i-32);i=i+5;end;,例见P111 32,fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:数据的格式化输出:fprintf(fid,format,variables)按指定的格式将变量的值输出到屏幕或指定文件fid为文件句柄,若缺
7、省,则输出到屏幕,format用来指定数据输出时采用的格式%d 整数%e 实数:科学计算法形式%f 实数:小数形式%g 由系统自动选取上述两种格式之一%s 输出字符串,randn产生均值为0,方差 2=1,标准差=1的正态分布的随机数或矩阵的函数。用法:Y=randn(n)返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。Y=randn(m,n)或 Y=randn(m n)返回一个m*n的随机项矩阵。Y=randn(m,n,p,.)或 Y=randn(m n p.)产生随机数组。Y=randn(size(A)返回一个和A有同样维数大小的随机数组。randn返回一个每次都变化的数量
8、。s=randn(state),rand均匀分布的随机数或矩阵用法:Y=rand(n)Y=rand(m,n)Y=rand(m n)Y=rand(m,n,p,.)Y=rand(m n p.)Y=rand(size(A)rands=rand(state)描述rand函数产生由在(0,1)之间均匀分布的随机数组成的数组Y=rand(n)返回一个n x n的随机矩阵如果n不是数量,则返回错误信息Y=rand(m,n)或 Y=rand(m n)返回一个m x n的随机矩阵Y=rand(m,n,p,.)或 Y=rand(m n p.)产生随机数组Y=rand(size(A)返回一个和A有相同尺寸的随机矩阵
9、,例:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。程序如下:sum=0;cnt=0;val=input(Enter a number(end in 0):);while(val=0)sum=sum+val;cnt=cnt+1;val=input(Enter a number(end in 0):);endif(cnt 0)sum mean=sum/cntend,5、break和continue语句,用于循环语句(for,while):break:用于跳出循环continue:跳过后面的语句继续循环,例:输出100到200之间第一个能被7整除的数for i=100:200
10、 if rem(i,7)=0 continue end breakendi,循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。,function output=ave(x)a b=size(x);Count=0;output=0;for i=1:a for j=1:b Count=Count+1;output=output+x(i,j);endendoutput=output/Count;,写一个函数,输入参数为矩阵,计算并返回矩阵中所有数据的平均值。不使用内置函数,例:若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求1,500之间的全部完数。for m=1:500 s=0;for k=1:m/2 if rem(m,k)=0 s=s+k;end end if m=s disp(m);end end,一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等。程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。,