|
回复 8楼 ChaChing ,1楼 rocwoods ,12楼 rocwoods ,13楼 bainhome 的帖子
我说的其他语言,不只是fortran、c等第三代语言,也包括和matlab并列的第四代语言,比如mathematica等。
我并不是完全否定matlab,只是说用矢量来代替循环并不是一个好的办法,将矢量化代替循环(注意,不是矢量化,而是矢量化代替循环)上升到编程新思想的高度更是可笑。
比如,一个比较经典的矢量化代替循环的例子:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
用一个循环建立一个向量,其元素依赖于前一个元素
使用的工具:FILTER, CUMSUM, CUMPROD
优化前:
A = 1;
L = 1000;
for i = 1:L
A(i+1) = 2*A(i)+1;
end
优化后:
L = 1000;
A = filter([1],[1 -2],ones(1,L+1));
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
这个例子能搞懂的人估计不多,能用到实际程序中的更少,反正我是花了很长时间才搞懂的,但搞懂以后觉得不值得,没什么用,而且确实后来也没用过。
所以,我觉得matlab还是把循环速度搞上去才是正事。
lz的问题本来也不是什么大问题,大不了开一晚上机器,就什么都解决了。
我也只是就这个机会,就觉得matlab不爽的地方发发牵骚,不管发的牵骚对还是错,反正和大家讨论一下,总有收获:lol
原帖由 rocwoods 于 2008-9-16 17:23 发表
bainhome兄说的“在那个年代形成的程序构架,这么多现成的程序库已经形成,现在想改,恐怕它首先也得有能力改吧。”正是我想说,没有表达出来的 |
评分
-
1
查看全部评分
-
|