登录论坛

查看完整版本 : 【求助】请教matlab中关于组合的编程方法!急!!


pl1211
2008-03-08, 14:31
数组A=[A1;A2;...Am], 其中Ai是1×n的行向量。
现从Ai(i=1~m)中分别抽取一个元素,可组成一个新的向量B(含m个元素),如何得到所有的B(n^m个组合)??

lanbingfly
2008-03-09, 10:51
数组A=[A1;A2;...Am], 其中Ai是1×n的行向量。
现从Ai(i=1~m)(((其中Ai是1×n的行向量。)))
貌似矛盾了

mathevil
2008-03-10, 22:23
A 已知吗?

pl1211
2008-03-13, 18:39
没有矛盾,我说的Ai(i=1~m)是1×n的行向量,那是i 不是1 !!!
A的行列m、n由输入参数后计算得到

本人已经解决该问题。 大家有兴趣可参考下^_^ 水平有限

[row,col]=size(A); %读出A的行、列数
nn=col^row;
D=ones(row,col); %定位矩阵的基本单元矩阵,用于生成定位矩阵
E=[]; %存放定位矩阵

for j=1:row
if (j==1)
for i=j:col
D(row,i)=i; %将A数组的最后一行,即第row行,所有元素的地址抽取一遍
end
C=D;
E=[E,C];
elseif (j~=1)
for i=2:col
C((row-j+1),:)=i;
E=[E,C];
end
C=E;
end

if (j==row)
break
end
end

for k=1:row
for g=1:nn
B(k,g)=A(k,E(k,g));
end
end