用perms函数就可以,例如求1到4的全排列:
v=[1,2,3,4];
>> f=perms(v)
f =
4 3 2 1
4 3 1 2
4 2 3 1
4 2 1 3
4 1 2 3
4 1 3 2
3 4 2 1
3 4 1 2
3 2 4 1
3 2 1 4
3 1 2 4
3 1 4 2
2 3 4 1
2 3 1 4
2 4 3 1
2 4 1 3
2 1 4 3
2 1 3 4
1 3 2 4
1 3 4 2
1 2 3 4
1 2 4 3
1 4 2 3
1 4 3 2
perms(1:n)
或者用递归算法
function yyy=pai(xxx)
n=length(xxx);
if n>1
yyy=[];
for i=1:n
zzz=pai( [xxx(1:i-1),xxx(i+1:end) ] );
yyy=[yyy;[ones(size(zzz,1),1).*xxx(i),zzz]];
end
else
yyy=xxx;
end
调用时写pai(1:n)就行了