質問: [600 142 30 75 13; 600 141 30 75 14; 600 142 30 80 14] aの5列目の値が他の行の5列目の値と重複している場合に、行数が小さいほうの行を削除したいです。 この場合は1行目と2行目の5列目の値が重複しているので、1行目を削除して、下記のbのような行列を求めたいと考えています。 b=[600 141 30 75 14; 600 142 30 80 14] uniqueを使えばできそうなのですが、うまくいきません。 宜しくお願い致します。
回答: findgroups と splitapply を使う方法はいかがでしょうか? a = [600 142 30 75 13; 600 141 30 75 14; 600 142 30 80 14]; group = findgroups(a(:,4)); b = splitapply(@(x) x(end,:), a, group); 実行結果は以下のとおりです。 >> b b = 600 141 30 75 14 600 142 30 80 14