2016-12-12 17 views
0

ループを使わずにOctaveでテーブルをマージしたいと思います。ここで私は何をしたいの例です。Octave - ループのない列による行列のマージ

column1 column2 column3 
1  1  1 
1  2  2 
1  1  2 
1  1  3 
2  1  3 
2  1  1 

次のようにする:

column1 column2 column3 
1  1  6 
1  2  2 
2  1  4 

を私はループでそれを実行しようとしましたが、それは本当にあまりにも遅いです。ルーピングなしでそれを行うことができる機能はありますか?

+1

私はここにシステムを見ることができない、あなたは本当にあなたが「マージする方法を説明しなければなりません"それら。そしてあなたが望むことを行うforループでコードを表示してください – Andy

答えて

4

あなたがuniqueaccumarrayの組み合わせを使用することができます。

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


[U,~,ind] = unique(A(:,1:2),'rows'); %get the unique rows based on the column 1 and 2. 
AC  = accumarray(ind,A(:,3)); %sum the value of column 3 based on column 1 and 2 
M   = [U,AC] % creation of the final matrix. 

結果:

M = 

    1 1 6 
    1 2 2 
    2 1 4 
+0

ありがとう!これはまさに私がやりたいことです。ありがとう。 – Joseph

関連する問題