3

matlabでテーブルの小計を取りたいです。2 つの列の値が等しい場合は、その値を取得し、エントリがあれば加算します。

例を挙げると、ソースマトリックスは次のとおりです。

A = [1 2 3;
1 2 2;
1 4 1;
2 2 1;
2 2 3];

出力は次のようになります。

B = [1 2 5;
1 4 1;
2 2 4];

最初の 2 列が等しい場合は、3 列目を合計します。数回ループすることなく、簡単に行う方法はありますか?

4

2 に答える 2

5

uniqueとの組み合わせでこれを行うことができますaccumarray

%# find unique rows and their corresponding indices in A
[uniqueRows,~,rowIdx]=unique(A(:,1:2),'rows');

%# for each group of unique rows, sum the values of the third column of A
subtotal = accumarray(rowIdx,A(:,3),[],@sum);

B = [uniqueRows,subtotal];
于 2012-12-21T14:27:50.733 に答える