如何索引向量中所有对象的函数调用? - 提高绩效

时间:2014-01-22 15:35:42

标签: matlab oop indexing

在matlab脚本中我有一个包含同一个类的不同实例的向量。现在我想同时调用每个实例的相同功能。

使用棘手的索引,是否可以在没有循环的情况下执行此操作?例如:

runner(1:100) = Human();
runner(:).run('fast');     % causes no error and no function call

在我的项目中,有一个具有不同神经网络(作为对象)的向量。我试着用一个电话向前宣传。

谢谢你的时间!

1 个答案:

答案 0 :(得分:3)

嗯,如果你愿意修改你的方法,有一种方法。当您拨打runner(:).run('fast');之类的内容时会发生什么?而不是将Human()的实例传递给run方法100次,而是将整个对象向量(object array)传递给方法一次。从方法内部打印出对象输入并亲自查看。因为在您的情况下没有任何反应,您的run方法必须以忽略非标量对象的方式编写。你需要做的是矢量化你的方法。根据您的方法的性质,这可能意味着在某些情况下使用for循环,但它可能是更快,更优雅的选项,因为它最小化函数调用的数量。

当然,另一种选择是使用run循环调用for方法100次。如果你真的想要“一次调用”然后只是隐藏一个函数中的循环,或者如果你不介意事情要慢一点,那么使用arrayfun只不过是一个隐藏{{1}的函数。 } loop:

for