具有大小为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)?
谢谢!
答案 0 :(得分:3)
[~,~,ind]=unique(A(:,1:2),'rows')
为您提供了对accumarray
有用的下标/索引数组。第一个参数的下标需要引用第二个参数中的位置(即列向量A(:,3)
。不确定为什么你期望一个2乘5的数据矩阵,而不是索引,在那里做任何事情。< / p>
ans(ind)
会为您提供一个包含A
行数的列向量。