gpt4 book ai didi

matlab - 如何按多列对总和进行分组?

转载 作者:行者123 更新时间:2023-12-04 05:10:12 25 4
gpt4 key购买 nike

有一个大小为 n x 3 的矩阵,我想按组对第 3 行值求和,由第 1 列和第 2 列定义。

举一个具体的例子

A =[0.0050    0.0050    0.0050
0.0050 0.0050 0.0150
0.0050 0.0050 0.0250
0.0050 0.0050 0.0350
0.0050 0.0150 0.0050]

我想对第三列求和,以便得到一个矩阵

SumA = [0.05 0.05 0.8; 0.05 0.15 0.005];

我试图通过调用 accumarray(A(:,[1 2]), A(:,3)) 创建组,但它返回一个错误:
第一个输入 SUBS 必须包含正整数下标。

然后我尝试通过首先创建来解决
ind = A(:, [1,2])*1000;

然后
accumarray(ind, A(:,3))

但它返回了一个 5 x 15 的矩阵,这不是我想要的结果。

有谁知道如何对按所选列的组合分组的行求和(相当于 SQL SELECT a, b, SUM(c) FROM A GROUP BY a, b)?

谢谢!

最佳答案

[~,~,ind]=unique(A(:,1:2),'rows')给你一个对 accumarray 有用的下标/索引数组.第一个参数的下标需要引用第二个参数中的位置(即列向量 A(:,3) 。不知道为什么你期望一个 2×5 的数据矩阵,而不是索引,在那里做任何事情。
ans(ind)会给你一个列向量,行数与 A 一样多再次。

关于matlab - 如何按多列对总和进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com