2017-07-18 30 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,:)' –