您的位置:首页 > 编程语言 > MATLAB

For和While在C和MATLAB中的区别——MATLAB的大坑

2014-05-04 14:40 148 查看
For和while是常见的循环关键字,在许多语言中都是通用的。但是想必不是所有人,都被其中的区别困扰过,尤其是MATLAB“程序员”。

x=[1,2,3,4,5,6,7];
i=1;
while i<=length(x)
x(i)=[];
i=i+1;
end
i


这段代码的运行结果是

i=

  5

i在递增,而MATLAB在每次循环都调用了length(x),因此length(x)在递减。

i: 1 2 3 4 5

length(x) 7 6 5 4 3

当i=5时跳出循环。

再看for这个大坑。测试代码为:

x=[1,2,3,4,5,6,7];
for i=1:length(x)
x(i)=[];
end
i


运行结果是这样的:

??? Error: File: Untitled.m Line: 2 Column: 7
Unexpected MATLAB operator.

程序只计算了length(x)一次,因此每次进入循环是i都要与最初的7=length(x)比较,因此报了ArrayOutOfRange的错误。

事后诸葛亮:编程的时候,千万不能想当然。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: