- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab笔记之十一有关M文件编写
Matlab笔记之十一----??? #有关M文件编写#
for循环结构:
for x = array
( commands )
end
while循环结构:
while expression
( commands )
end
a(1)=1
a(2)=1
i=2
while a(i)=10000
a(i+1)=a(i-1)+a(i)
i=i+1
end;
i
a(i)
单分支:
if expression
(commands)
end
双分支:
if expression
?? (commands1)
else
?? (commands2)
end
多分支:
if expression1
??? (commands)
elseif expression2
??? (commands)
…………
else
?? (commands)
end
如果判决条件expression为一个空数组,MATLAB认为条件为假(false)。
表达式有时由多个逻辑子表达式组成的,MATLAB将尽可能少地检测这些子表达式的值。例如,表达式为:(子表达式1 |子表达式2),当MATLAB检测到子表达式1的值为真时,它就认为表达式为真,而不再对子表达式2进行检测。又如,表达式为:(子表达式1 子表达式2),当MATLAB检测到子表达式1的值为假时,它就认为表达式值为假的,从而跳过该结构。
if指令判决和break指令的配合使用,可以强制终止for循环或while循环。
switch-case结构:
switch ex??????? ex为一标量或字符串。
case test1
(commands 1)???? 当ex等于test1时,执行组命令1,然后跳出该结构。
case test2
……
case testk
(commands k)???? 当ex等于testk时,执行组命令k,然后跳出该结构。 otherwise??????? otherwise指令可以不存在
(commands)?????? 表达式不等于前面所有检测值时,则执行该组命令。
end
1 当遇到switch结构时,MATLAB将表达式的值依次和各个case指令后面的检测值进行比较。如果比较结果为假,则取下一个检测值再比较,一旦比较结果为真,MATLAB将执行相应的一组命令,然后跳出该结构。如果所有的比较结果都为假,即表达式的值和所有的检测都不等,MATLAB将执行otherwise后面的一组命令。由此可见上述结构保证了至少有一组命令会得到执行。
2 switch指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式,比较这样进行:表达式 = = 检测值i。而对于字符串,MATLAB将调用函数strcmp 来实现比较:strcmp(表达式,检测值i)。
3 case指令后面的检测值不仅可以为一个标量值或一个字符串,还可以为一个元胞数组。如果一个检测值是一个元胞数组,MATLAB将把表达式的值和该元胞数组中的所有元素进行比较;如果元胞数组中某个元素和表达式的值相等,MATLAB认为此次比较结果为真,从而执行与该检测值相应的一组命令。
for i=1:10
a{i}=89+i
b{i}=79+i
c{i}=69+i
d{i}=59+i
end
c=[d,c]
Name={ Jack,Marry,Peter, Rose, Tom};
Mark={72,83,56,94,100};
Rank=cell(1,5);
% 创建一个含5个元素的架构数组S,它有三个域 S=struct(Name,Name,Marks,Mark,Rank,Rank);
for i=1:5
switch S(i).Marks
case 100 % 得分为100时
?? S(i).Rank=满分;??? % 列为‘满分’等级
case a????????????????? % 得分在90和99之间
?? S(i).Rank=优秀;??? % 列为‘优秀’等级
case b????????????????? % 得分在80和89之间
?? S(i).Rank=良好;??? % 列为‘良好’等级
case c????????????????? % 得分在60和79之间
?? S(i).Rank=及格;??? % 列为‘及格’等级
Otherwise?????????????? % 得分低于60
S(i).Rank=不及格;?? % 列为‘不及格’等级
end
end
??????????????????????? % 将学生姓名,得分,登记等信息打印出来
disp([学生姓名 , 得分 , 等级]);
disp( )
f
文档评论(0)