2017-07-18 85 views
0

給定一個單元陣列(或表),例如有兩列,如何找到行中值的唯一排列?也就是說,給出A = {'a','b';'b','a';'c','d'},應該返回的是{'a','b';'c','d'}Matlab獨特的行單元陣列/表考慮不同的排列等於

+0

爲了消除任何混淆「的獨特排列」,因爲其實我覺得「AB」和「巴」都是獨特的排列,使他們也可能是有用的改變問題的位應該都返回,不是嗎? – 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 matrix):'A = ['a''b'; 'b''a';'c''d']; [〜,r] = unique(sort(A,2),'rows');結果= A(r,:)' –

相關問題