【发布时间】:2016-01-31 19:29:48
【问题描述】:
在我的 Matlab 代码中,我有一个“质量”对象数组,它是一个描述质量、速度、加速度等的类的对象。
为了加快模拟速度,我想通过使用更多向量运算来减少 for 循环的使用。其中一项操作是获取当前质量与所有其他质量的距离。
我想这样解决:
%position is a vector with x and y values e.g. [1 2]
%repeat the current mass as many times as there are other masses to compare with
currentMassPosition = repmat(obj(currentMass).position, length(obj), 2);
distanceCurrentMassToOthersArray = obj(:).position - currentMassPosition;
我不能对对象数组使用冒号索引操作。目前我使用一个 for 循环来遍历每个对象。您有什么技巧可以在不使用 for 循环的情况下对其进行优化吗?
我希望我的问题足够清楚,否则我会优化它;)。
【问题讨论】:
-
我建议避免使用 Matlab 中的对象,如果你可以用其他方法做同样的事情。如果您仍然想要一个将多个变量“组合”在一起的对象,请考虑创建一个数组对象而不是对象数组,这样您就可以调用
obj.position(:)进行矢量化操作。 -
感谢您的提示。由于我的挑战,我想以面向对象的方式学习编码。我确信我做得并不完美。
标签: matlab class object vector indexing