【发布时间】:2015-10-11 20:58:03
【问题描述】:
我正在尝试在 matlab 中优化给定的面向对象代码。它是一种经济模型,由市场和代理组成。耗时的部分是在每个时间步更新所有代理的某些属性,这是在 for 循环中实现的。 但是,我无法对面向对象的代码进行矢量化。
这是一个示例(请注意,到目前为止减慢代码速度的第二件事是,新条目附加到向量的末尾。我知道这一点并将修复它):
for i=1:length(obj.traders)
obj.traders(i).update(obj.Price,obj.Sentiment(end),obj.h);
end
update 的样子
function obj=update(obj,price,s,h)
obj.pos(end+1)=obj.p;
obj.wealth(end+1)=obj.w(1,1,1);
obj.g(end+1)=s;
obj.price=price;
obj.Update_pos(sentiment,h);
if (obj.c)
obj.Switch_Pos;
end
...
我的第一个想法是尝试类似的东西
obj.traders(:).update(obj.Price,obj.Sentiment(end),obj.h);
这没有用。如果有人对如何向量化这段代码有任何建议,同时保持面向对象的实现,我会很高兴。
【问题讨论】:
标签: performance matlab oop