matlab 排列组合问题 ,在线等~

例如
矩阵A =
3 0 1 1 2 3 0
4 3 6 3 1 6 6
5 6 3 7 3 2 2

我要求出A的所有排列组合,组合方式如下:
3 0 1 1 2 3 0
3 0 1 1 2 3 6
3 0 1 1 2 3 2
3 0 1 1 2 6 0
3 0 1 1 2 6 6
。。。。
总共是3*3*3*3*3*3*3种组合。应该明白什么意思了吧?先谢谢大家帮忙~

第1个回答  2012-11-24
依照下面的方法,你可以实验一下。
matlab做排列组合:比如要ABCD的全排列,可以用perms函数
perms(['ABCD'])运行结果
DCBA
DCAB
DBCA
DBAC
DABC
DACB
CDBA
CDAB
CBDA
CBAD
CABD
CADB
BCDA
BCAD
BDCA
BDAC
BADC
BACD
ACBD
ACDB
ABCD
ABDC
ADBC

ADCB
以下是几个常用的排列、组合与阶乘等函数。
1、combntns(x,m)
列举出从n个元素中取出m个元素的组合。其中,x是含有n个元素的向量。
2、perms(x)
给出向量x的所有排列。
3、nchoosek(n,m)
从n各元素中取m个元素的所有组合数。 nchoosek(x,m)从向量x中取m个元素的组合
4、factorial(n)
求n的阶乘。
5、prod(n:m) %求排列数:m*(m-1)*(m-2)*…*(n+1)*n prod(1:2:2n-1)或prod(2:2:2n) %
求(2n-1)!!或(2n)!!
6、cumprod(n:m)
输出一个向量[n n*(n+1) n(n+1)(n+2) … n(n+1)(n+2)…(m-1)m]
7、gamma(n)
求n!
8、v='n!';
vpa(v)
更详细资料如下:
nchoosek
Binomial coefficient or all combinations
Syntax:
C = nchoosek(n,k)
函数描述: 从 n 个元素中 一次选 k 个元素的所有组合数 C(注意,C是一个数值)。

C = n!/((n–k)! k!);
C = nchoosek(v,k)
函数描述: 从 向量 v 中 一次选其中 k 个元素 的所有组合 C (注意:C是一个矩阵,列
数 为 k )
第2个回答  2012-11-24
这是最容易理解的方法了,虽然复杂点
A =[3 0 1 1 2 3 0;
4 3 6 3 1 6 6;
5 6 3 7 3 2 2];
B=[]
for i1=1:3
for i2=1:3
for i3=1:3
for i4=1:3
for i5=1:3
for i6=1:3
for i7=1:3
B=[B;[A(i1,1) A(i2,2) A(i3,3) A(i4,4) A(i5,5) A(i6,6) A(i7,7)]];
end
end
end
end
end
end
end本回答被提问者和网友采纳

如何利用matlab把多组向量排列组合。
生成全排列可以用perms函数,把各向量放在元胞数组中,然后按照全排列来组合即可:M = {[1 2 3]; [4 5 6]; [7 8 9]};I=perms(1:3);C=mat2cell(I,ones(6,1),3);R=cellfun(@(ii)[M{ii}],C,'UniformOutput',false)这样得到的结果R是一个元胞数组,其每个元素分别是一个组合出...

matlab里,特定位置的排列组合问题
1、数据都是[n1 n2]这种形式?比如n=10,对应的就是[101 102]?2、最后这句话【从这些数列中选取4个然后从选取的4个数列中任选一个列出所有的排列组合】不明确,详细说明一下。

关于MATLAB排列组合的问题
这个问题可以这样解决,增加一个meshgrid()函数,即 x=linspace(0,3,6);y=linspace(0,3,6);[x,y]=meshgrid(x,y)z=4*(x-1).^2-(y+1).^2 运行结果

一个matlab里的排列组合或者说是循环嵌套的层数不定的问题,如何...
1、使用ndgrid生成N维网格数据;2、把网格数据转换为坐标组合。参考代码 把每维的坐标写成向量,然后放在一个cell数组中% 这里按照你给的例子示范(三个坐标)C = { 3:4 3:4 3:4 };% 使用ndgrid生成N维网格数据n = length(C);S=arrayfun(@(i)sprintf('x%i ',i),1:3,'UniformOutput',fa...

MATLAB中排列组合问题,新手救急!!!谢谢!!!
Matlab:排列组合问题 END 2.排列组合的函数 perms(x):在程序命令框中输入一个向量x,perms(x) 给出向量x的所有排列。Matlab:排列组合问题 combntns(x,m):在程序中输入一个向量x与需要的元素个数m,combntns(x,m)给出了从包含n个元素的向量x中选取m个元素的组合。Matlab:排列组合问题 Matlab:...

在MATLAB中怎么输入排列组合
1、combntns(x,m)列举出从n个元素中取出m个元素的组合。其中,x是含有n个元素的向量。2、perms(x)给出向量x的所有排列。

在matlab中实现向量中元素的排列组合
0、0:x=[1,2,3,4,5,0,0];y=perms(x);y就是x的所有排列,perms是系统函数,你可以help一下。但关键是有两个零,有些排列是重复的,此时使用化简函数unique即可:y=unique(y,'rows');y变成了一个排列的矩阵,每一行是一种排列,而且不重复。最后在需要的位置插入一些0的列向量即可。

Matlab对于一组已有数据的多种排列组合
a=1:10;%十个数,可以是其他不同的十个r=zeros(size(a));%每个位置出现的次数,初始化全部为零for i=1:100 b=a(randperm(length(a)));%b就是a中10个数的随机顺序排列 ind=find(b==1);%找到1的位置,也可以是其他a中的数字 r(ind)=r(ind)+1;%对应位置记录加1个end ...

matlab 中什么语句可以得到排列组合的所有情况
查阅nchoosek函数

用matlab对矩阵A=[1,2,3;4,5,6;7,8,9;10,11,12 ].的列进行排列组合。可...
A=[1,2,3;4,5,6;7,8,9;10,11,12 ];p=perms(1:4);for n=1:24 B{n}=A(p(n,:),:);end B{1}到B{24}即所求矩阵

相似回答