当前位置:编程学习 > Matlab >>

matlab全排列 急!!

我现在又11列,每列有2个数,现在我想把这11列的数进行全排列,就是每列每次都拿出一个数进行组合。求高手啊!!!急!
追问:你好,谢谢你的回答,可能是我说的不清楚。我是想要这样的,如下:
a=[1 2 3; 4 5 6]

怎么让他变成
1 2 3
1 2 6 
1 5 3
1 5 6
4 2 3
4 2 6 
4 5 3
4 5 6算是组合吧就是第几列的数据必须在第几列,不能换列,在这个前提下,进行组合,比如有11列,每列有2个数,那么应该有2^11种组合。
答案:你的这个是2行11列,要全排列方式为;首先要定义这个矩阵才行。
perms(a(1,:))和perms(a(2,:)),举个例子吧:
a=[1 2 3;4 5 6]

a =

     1     2     3
     4     5     6

>> perms(a(1,:))

ans =

     3     2     1
     3     1     2
     2     3     1
     2     1     3
     1     2     3
     1     3     2

>> perms(a(2,:))

ans =

     6     5     4
     6     4     5
     5     6     4
     5     4     6
     4     5     6
     4     6     5
我相信你明白了,呵呵。
其他:function strc=funstr2(str1,str2)
clc,
%检验参数是否是字符串
ls1=length(str1);
for i=1:ls1
    if ~ischar(str1(i))
        error('Input must be string');
    end
end
ls2=length(str2);
for i=1:ls2
    if ~ischar(str2(i))
        error('Input must be string');
    end
end
slen=ls1+ls2;
A=NCHOOSEK(1:slen,ls1);
[m,n]=size(A);
A1=zeros(m,slen);
for i=1:m
    for j=1:n
        A1(i,A(i,j))=1;
    end
end
strc=cell(m,1);
for ir=1:m
    ic=1;
    i1=0;
    i2=0;
    output=[];
    while ic<=slen;
        if(i1<=ls1)&(A1(ir,ic)==1);
        i1=i1+1;
        output(ic)=str1(i1);
      else if (i2<=ls2)&(A1(ir,ic)==0)
        i2=i2+1;
        output(ic)=str2(i2);
        end    
    end
    ic=ic+1;
end
strc=char(output);
end

上一个:请教matlab高手教教编写一段程序?
下一个:appollo matlab 解答疑惑!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,