- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七讲 Matlab流程控制
五、switch-case-end语句 基本格式: switch 表达式(标量或字符串) case 值1 语句组1 case 值2 语句组2 . . . case 值m 语句组m otherwise 语句组m+1 end 主讲:韩锟 TelH)O) Email:hkun@mail.csu.edu.cn 3.3 流程控制 一、Matlab的程序结构 Matlab的程序结构 顺序结构 循环结构 分支结构 for循环 while循环 if—else—end switch—case try—catch 二、for循环 for循环的基本格式: for 循环变量 = Array 循环体 end 含义:for循环允许一组命令(循环体)以固定的和预定的次数重复。 for循环的执行过程: for 循环变量 = Array 循环体 end 循环体语句按数组中的每一列执行一次。 每一次迭代,循环变量i被指定为数组的下一列,即第n次循环时,i=Array(:, n)。 for i=1:10 x(i)=i; end x x = 1 2 3 4 5 6 7 8 9 10 关于for循环的几点重要说明: 1)for循环的终止 for i=1:10 x(i)=i; i=10; end x x = 1 2 3 4 5 6 7 8 9 10 for循环不能用for循环内重新赋值循环变量i来终止!! 用break语句于终止for循环的执行!!! tips: for i=1:10 x(i)=i; break end x x = 1 2)for循环中的Array可以是任何有效的Matlab数组,在每一次迭代中,循环变量i被指定为Array的下一列,即在第n次循环中,i=Array(:, n)。 s=0; data=[12 13 14;15 16 17;18 19 20;21 22 23]; for k=data s=s+k; end disp(s); s=0; data=[12 13 14;15 16 17;18 19 20;21 22 23]; for k=data s=s+k; end disp(s); data =
12 13 14
15 16 17
18 19 20
21 22 23 39 48 57 66 3)for循环可以嵌套 例:生成一个5×10000的Hilbert长方矩阵,它的第 i 行第 j 列元素为h(i, j)=1/(i+j-1)。 for i=1:5
for j=1:10000
h(i, j)=1/(i+j-1);
end end 内循环 外循环 4)for循环的提速 查看程序运行时间的函数 tic 要计算时间的程序段 toc 启动计时器 终止计时器,并输出所花费的时间 循环语句的处理方法 采用向量化方法 当有等效的数组或矩阵操作来解给定问题 时,应避免用for循环。 tips: tic for t=1:20000 x(t)=sin(t); end toc Elapsed time is 0.468000 seconds. 例:t=0:20000,计算x(t)=sin(t)的值 tic t=1:20000; x=sin(t); toc Elapsed time is 0.015000 seconds. 使用向量化函数 当有等效的向量化函数来解给定问题时, 应避免用for循环。 tips: 例:求1+2+3+…+10000的值 tic mysum=0; for i=1:10000 mysum=mysum+i; end toc Elapsed time is 0.032000 seconds. mysumtic i=1:10000; mysum=sum(i); toc Elapsed time is 0.000000 seconds. mysum多重循环应注意循环次序 外循环执行循环次数少的,内循环执行循 环次数多的 tips: 例:生成一个5×10000的Hilbert长方矩阵
文档评论(0)