C++,python,热爱算法和机器学习
全部博文(1214)
分类: Python/Ruby
2012-03-31 19:55:37
最近写了一些matlab程序,想起以前想过的一个东西,记录一下。
Matlab的for循环很有意思,比如下例:
i = 3;输出
i=2也就是说matlab的循环变量的循环路径是在进入到for语句的时候就决定了,它会确定起始点,步长和终点,以后每次循环都加上步长,直到到达终 点为止。所以 for i = 1:numel(a)这种写法,numel(a)也只会被计算一次(而建立中间变量 t = numel(a);然后 for i = 1:t的写法会降低效率),这和C语言有本质的区别。
注意下面两个的区别:
for i = 1:100000000以及
for i = [1:100000000]第一个的1:100000000并不会真的初始化成一个向量;而第二个会,导致内存不够无法执行。
补充:最新2009a版的Matlab遇到上面例子中的循环体内部改变循环变量的情况会给出提示,另外还有很多新功能,建议升级,虽然大了点,安装文件有4G多。