Matlab中的2x2数组置换
我目前正在做一个项目,我有一个数组,我想在不使用数组的情况下对所有元素进行2x2排列 我有这样的想法:Matlab中的2x2数组置换,matlab,permutation,Matlab,Permutation,我目前正在做一个项目,我有一个数组,我想在不使用数组的情况下对所有元素进行2x2排列 我有这样的想法: A = [ 1 , 3 , 5 , 7] 我想得到这样的东西 1 1 1 3 1 5 1 7 3 1 3 3 3 5 3 7 5 1 5 3 5 5 5 7 7 1 7 3 7 5 7 7 我还想得到一个函数,在这个函数中,我可以选择一个数字是否可以与其自身进行排列(egg:no 77 66 55)或者顺序是否重要(egg:5 3等于3 5,因此仅在输入时)您可以使用meshgrid [x
A = [ 1 , 3 , 5 , 7]
我想得到这样的东西
1 1
1 3
1 5
1 7
3 1
3 3
3 5
3 7
5 1
5 3
5 5
5 7
7 1
7 3
7 5
7 7
我还想得到一个函数,在这个函数中,我可以选择一个数字是否可以与其自身进行排列(egg:no 77 66 55)或者顺序是否重要(egg:5 3等于3 5,因此仅在输入时)您可以使用
meshgrid
[x,y] = meshgrid(A, A);
out = [x(:), y(:)];
% 1 1
% 1 3
% 1 5
% 1 7
% 3 1
% 3 3
% 3 5
% 3 7
% 5 1
% 5 3
% 5 5
% 5 7
% 7 1
% 7 3
% 7 5
% 7 7
您可以删除自匹配项(即5
,7
,等等)
当顺序重要时,您可以通过先沿列排序,然后获取唯一的行来删除重复项
out = unique(sort(out, 2), 'rows')
% 1 3
% 1 5
% 1 7
% 3 5
% 3 7
% 5 7
使用
meshgrid
[x,y] = meshgrid(A, A);
out = [x(:), y(:)];
% 1 1
% 1 3
% 1 5
% 1 7
% 3 1
% 3 3
% 3 5
% 3 7
% 5 1
% 5 3
% 5 5
% 5 7
% 7 1
% 7 3
% 7 5
% 7 7
您可以删除自匹配项(即5
,7
,等等)
当顺序重要时,您可以通过先沿列排序,然后获取唯一的行来删除重复项
out = unique(sort(out, 2), 'rows')
% 1 3
% 1 5
% 1 7
% 3 5
% 3 7
% 5 7
如果您想要重复组合(顺序很重要),请使用
perms
,并在前两列中使用unique
行
例如:
A = [ 1 , 3 , 5 , 7]
R = perms(A)
unique(R(:,1:2), 'rows')
ans =
1 3
1 5
1 7
3 1
3 5
3 7
5 1
5 3
5 7
7 1
7 3
7 5
A = [ 1 , 3 , 5 , 7]
combnk(A, 2) % all combinations using 2 elements
ans =
5 7
3 7
3 5
1 7
1 5
1 3
但是,如果您想要真正独特的组合,请使用combnk
例如:
A = [ 1 , 3 , 5 , 7]
R = perms(A)
unique(R(:,1:2), 'rows')
ans =
1 3
1 5
1 7
3 1
3 5
3 7
5 1
5 3
5 7
7 1
7 3
7 5
A = [ 1 , 3 , 5 , 7]
combnk(A, 2) % all combinations using 2 elements
ans =
5 7
3 7
3 5
1 7
1 5
1 3
如果您想要重复组合(顺序很重要),请使用
perms
,并在前两列中使用unique
行
例如:
A = [ 1 , 3 , 5 , 7]
R = perms(A)
unique(R(:,1:2), 'rows')
ans =
1 3
1 5
1 7
3 1
3 5
3 7
5 1
5 3
5 7
7 1
7 3
7 5
A = [ 1 , 3 , 5 , 7]
combnk(A, 2) % all combinations using 2 elements
ans =
5 7
3 7
3 5
1 7
1 5
1 3
但是,如果您想要真正独特的组合,请使用combnk
例如:
A = [ 1 , 3 , 5 , 7]
R = perms(A)
unique(R(:,1:2), 'rows')
ans =
1 3
1 5
1 7
3 1
3 5
3 7
5 1
5 3
5 7
7 1
7 3
7 5
A = [ 1 , 3 , 5 , 7]
combnk(A, 2) % all combinations using 2 elements
ans =
5 7
3 7
3 5
1 7
1 5
1 3