【发布时间】:2013-09-20 14:42:06
【问题描述】:
我想根据矩阵R中的值将矩阵M的元素相加到数组d中。
理论上,它不能被序列化,因为求和到一个数组(D)的动作需要内存访问相同的数据。
我是这样实现的
for ind = 1: numel(R)
d(R(ind)) = d(R(ind)) + M(ind);
end
就像@Andrew 在这个相关主题中建议的那样: How do I iterate through each element in an n-dimensional matrix in MATLAB?
数组R的元素并不是每一个都很大,也不是1或2,例如可以是1到15。
在 Matlab 中是否有更有效的方法来做到这一点,即使动作的“理论复杂性”会更糟?
因为它也可以通过迭代 R 中的可能值并在 R = val 的索引中求和 M 的元素或 Matlab 中更多“内置”的元素来解决,这些元素通常不“喜欢”循环说话。
例如,在 SQL 中,您有一个“内置”方法来折叠一列的重复并获取另一列中值的总和。
有一个关于类似动作但语言不同的主题: Collapse a matrix to sum values in one column by values in another
【问题讨论】:
-
请给出 R 和 M 的一些最小示例以及预期的输出。
标签: arrays matlab loops matrix sum