matlab - 将总和与索引并行化
问题描述
抱歉,标题可能不准确。但我只是不确定它应该叫什么。
考虑一个索引向量 id=[1,1,2] 和一个数据向量 d=[3,4,5]。我想拥有
A(id)=A(id)+d;
当然,我知道这是无效的。只是想知道如果 length(id)=length(d) 很长,是否有一种有效的方法(避免 for 循环)。
更准确地说,我想拥有
for ii=1:length(id)
A(id(ii))=A(id(ii))+d(ii);
end
所以对于上面的例子,我期望 A = [3+4,5] = [7,5]。
解决方案
您可以使用accumarray
:
A = accumarray(id(:), d);
推荐阅读
- c# - 我可以从我的 Unity 应用程序中阅读电子邮件收件箱吗?
- c# - 以编程方式获取 DataGridComboBoxColumn 中 ComboBox 的内容
- php - 将数组字段调用到 If 条件语句
- excel - Excel 数据透视表自动排序
- c# - 从消息检查器访问 HttpContext.Current 以进行异步 WCF 调用
- unity3d - Unity 跨平台
- join - 通过在 Hive 中对同一表的子集执行表的多个连接来尝试转置
- python-3.x - 在 Jinja2 中使用“if any():”?
- api - 如何对来自两个分页来源的条目进行分页
- docker - OWASP ZAP docker 在运行主动扫描时返回“连接被拒绝”