Matlab查找唯一排列

时间:2013-10-06 11:59:03

标签: matlab unique permutation

如何修改代码以仅获取排列的唯一值?

x = -1:1; 
a = 1:length(x);
[a1,a2] = ndgrid(a); 
y = x([a2(:) a1(:)]);

   y        unique y
-1  -1      -1  -1
-1   0      -1   0
-1   1      -1   1
0   -1       0   0
0    0       0   1
0    1       1   1
1   -1          
1    0          
1    1          

1 个答案:

答案 0 :(得分:1)

直接的方法可能是先对每对值进行排序然后应用unique

unique_y = unique(sort(y, 2), 'rows');

如果原始对中的值的顺序很重要,并且您希望确保sort不引入“新”对,则可以按如下方式更改解决方案:

unique_y = unique(intersect(y, sort(y, 2), 'rows'), 'rows');