2

有一个大小为 nx 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)?

谢谢!

4

1 回答 1

3

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

ans(ind)将再次为您提供一个包含尽可能多行的列向量A

于 2013-02-20T14:53:12.310 回答