Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4586889
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: Python/Ruby

2012-03-31 19:55:37

文章来源:http://zhiqiang.org/blog/it/for-in-matlab.html

最近写了一些matlab程序,想起以前想过的一个东西,记录一下。

Matlab的for循环很有意思,比如下例:

i  = 3;
for i = 1:i
  i=2*i
end

输出

i=2
i=4
i=6

也就是说matlab的循环变量的循环路径是在进入到for语句的时候就决定了,它会确定起始点,步长和终点,以后每次循环都加上步长,直到到达终 点为止。所以 for i = 1:numel(a)这种写法,numel(a)也只会被计算一次(而建立中间变量 t = numel(a);然后 for i = 1:t的写法会降低效率),这和C语言有本质的区别。

注意下面两个的区别:

for i = 1:100000000
  i=1;
end

以及

for i = [1:100000000]
  i=1;
end

第一个的1:100000000并不会真的初始化成一个向量;而第二个会,导致内存不够无法执行。

补充:最新2009a版的Matlab遇到上面例子中的循环体内部改变循环变量的情况会给出提示,另外还有很多新功能,建议升级,虽然大了点,安装文件有4G多。


阅读(3441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~