MATLAB 排列组合如何实现?从每个矩阵抽取一个元素组成排列
问题描述:
MATLAB 排列组合如何实现?从每个矩阵抽取一个元素组成排列
三个矩阵A=[1 2 3]; B=[4 5 6]; C=[7 8 9];
如何从每个矩阵抽取一个元素组成的所有排列
比如[1 4 7] [1 4 8] 等等
答
result=[];
for A=[1 2 3]
for B=[4 5 6]
for C=[7 8 9];
result=[result;perms([A B C])];
end
end
end
这样就行了,这是所有的排列.但你给出的例子好像是组合,组合的话就是
result=[];
for A=[1 2 3]
for B=[4 5 6]
for C=[7 8 9];
result=[result;[A B C]];
end
end
end可是要排列组合的矩阵有几百个,总不能写几百个循环吧?MATLAB有没什么方法能直接获取排列组合呢你的这些矩阵的大小都是一样的吗,如果一样的话是有办法的,不一样的话可能就比较复杂啦不一样,实际上我是一个矩阵,每一行元素个数不同要每一行取出一个元素组成矩阵,所以想不到要怎么做啊你的矩阵怎么能每行元素不一样多呢,那怎么形成的矩阵啊?是不是矩阵的有些元素是nan或者inf。有些元素是0,我不用那些元素的这个需要很复杂的编程实现,而且得到的数据量太大了,如果矩阵是10*10的,得到的结果已经超出matlab的能力了。好像是有10^10的数据啊