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

标签 matlab

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

举一个具体的例子

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]

我想对第三列求和,这样我就可以得到一个矩阵

总和 = [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/

相关文章:

matlab - 如何在 matlab 中绘制 "color map"图?

python - Scipy 的 solve_bvp 和耦合微分方程的性能问题

matlab - 在 Matlab 中写入文件时从 EOF 中删除字符

Matlab - 创建两个数组,考虑两个对象的所有可能值

algorithm - 在Matlab中将双变量绘图转换为单变量绘图

matlab - block 矩阵创建

matlab - matlab编程(如何实时处理)

python - python中由一维矩阵组成的二维矩阵

matlab - Matlab 中的支持向量机 : Meaning of Parameter 'box constraint' in function fitcsvm

matlab - 如何从 mat 文件加载指定变量