while方法
while一般分为 while expression (commands) end
其中,expression为条件表达式,(commands)就是其中的命令
expression一般就是想a==5、b>4的都是命令表达式(就是回复1和0的),如果结果回复true那么就会运行一次(commands)命令,如果为false就不运行,进入下一条命令。(一般都不使用==)
如果expression输入了true命令,那么就会把(commands)无限次运行,就疯了,直到摁Ctrl+C或者Ctrl+break(有些键盘没有)应急停止(如图只是大概30秒就飙到20000多,不及时摁可以导致matlab死机,但是是小概率的,除非(commands)命令行特别多),而且会出现错误,因为应急停止后end没有了。
如果expression输入false,就不会运行了,如图,因为开始设置a=1;,所以a只等于1,while没有运行。
(commands)就是命令行,不过命令行一般也需要和expression配合,想: a=1; %指定a while a<1000 %设置条件表达式 a=a+1 %设置命令 end 所以a只可以是1000.
any(expression)可以针对数组进行比较工作,如果expression里面的数字都是大于一,那么any才返回true(运行),反之就返回false(不运行),如果是1 0,any返回true,只有0 0才会返回false 如果是返回1 0 0 0 0的数组(any返回数组)那么就按false算,只有是1 1 1 1 1的数组才按照true算。
例子
最简单的: a=1; while a<5 a=a+1 end 如果a<5后,就会终止while运行,a=5
带运算次数的: a=1; num=0; while a<10 a=a+1 num=num+1 %计算运行次数 end
只显示a数值: a=1; while a<10 a=a+1; disp(num2str(a)) %使用disp和num2str end 如果想最后显示a可以把disp语句放到end后面。
询问while终止条件,然后最后显示最终结果: a=input('输入while条件(以字符串格式写出,比如''<5'') >> '); aa=sprintf(strcat('%s',a),'b'); b=1; while eval(aa) b=b+1; end disp(num2str(b))
使用any而且只显示最后结果: a=[20 20 20 20]; while any(a) a=a-1; end disp(num2str(a))