在matlab脚本中我有一个包含同一个类的不同实例的向量。现在我想同时调用每个实例的相同功能。
使用棘手的索引,是否可以在没有循环的情况下执行此操作?例如:
runner(1:100) = Human();
runner(:).run('fast'); % causes no error and no function call
在我的项目中,有一个具有不同神经网络(作为对象)的向量。我试着用一个电话向前宣传。
谢谢你的时间!
答案 0 :(得分:3)
嗯,如果你愿意修改你的方法,有一种方法。当您拨打runner(:).run('fast');
之类的内容时会发生什么?而不是将Human()
的实例传递给run
方法100次,而是将整个对象向量(object array)传递给方法一次。从方法内部打印出对象输入并亲自查看。因为在您的情况下没有任何反应,您的run
方法必须以忽略非标量对象的方式编写。你需要做的是矢量化你的方法。根据您的方法的性质,这可能意味着在某些情况下使用for
循环,但它可能是更快,更优雅的选项,因为它最小化函数调用的数量。
当然,另一种选择是使用run
循环调用for
方法100次。如果你真的想要“一次调用”然后只是隐藏一个函数中的循环,或者如果你不介意事情要慢一点,那么使用arrayfun
只不过是一个隐藏{{1}的函数。 } loop:
for