2017-07-18 4 views
0

たとえば2つの列を持つセル配列(またはテーブル)があれば、行内の値のユニークな順列を見つける方法は?つまり、A = {'a','b';'b','a';'c','d'}が返される場合、返されるのは{'a','b';'c','d'}です。Matlabのユニークな行セル配列/テーブル異なるパーミュテーションを等価とみなす

+0

を実際に私は「AB」と「BA」は、両方のユニークな順列、彼らがそうしていると思うので、質問を少し変更することが役に立つかもしれません両方返す必要がありますか? – 10a

+0

今私はそれがあなたの質問のタイトルにあるのを見て、それをあなた自身の質問にコピーします。 – 10a

+0

@Tina入力と出力の問題の本文に例があるので、十分に明確にする必要があります。 – Confounded

答えて

2

Aが細胞アレイであるという事実は複雑です。あなたはそれをこのように行うことができます。「ユニークな順列」についての混乱を削除するには

[~, ~, u] = unique(A);  % get unique labels of cells 
u = reshape(u,size(A));  % reshape into original shape 
u = sort(u,2);    % sort each row 
[~, r] = unique(u, 'rows'); % indices of unique rows 
result = A(r,:);    % use those indices into input cell array 
+1

非常に良い。ありがとうございました。 – Confounded

+0

セルアレイではなくテーブルであれば簡単でしょうか?どのようにソリューションが違うでしょうか? – Confounded

+1

私はテーブルについてはわかりませんが、それはより簡単だろうとは思っていません。 'A 'がchar配列(char行列)であった場合は、間違いなく簡単です:' A = [' a '' b '; 'b' 'a'; 'c' 'd']; [〜、r] =ユニーク(sort(A、2)、 'rows');結果= A(r、:) ' –

関連する問題