Arrays 从MXN矩阵生成2^N-1个矩阵

Arrays 从MXN矩阵生成2^N-1个矩阵,arrays,matlab,vector,matrix,Arrays,Matlab,Vector,Matrix,我需要生成10X5矩阵的所有可能组合。我需要的是所有的10X1矩阵,10X2矩阵,10X3矩阵等等。什么是最有效的方法。我可以使用多个循环,但这将是低效的。 我有一个矩阵: col1 col2 col3 col4 我想: col1 and col2 and col3 and col4 然后: col1 col2和col1 col3和col1 col4 依此类推,要返回列的所有2^5-1组合,您可以在循环中使用nchoosek: for k = 1:ceil(5/2) %only need t

我需要生成
10X5矩阵的所有可能组合。我需要的是所有的
10X1矩阵
10X2矩阵
10X3矩阵
等等。什么是最有效的方法。我可以使用多个循环,但这将是低效的。 我有一个矩阵:

col1 col2 col3 col4
我想:

col1 and col2 and col3 and col4
然后:

col1 col2和col1 col3和col1 col4


依此类推,要返回列的所有2^5-1组合

,您可以在循环中使用
nchoosek

for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating
  index{k} = nchoosek(1:5, k);
end

然后使用索引通过选择列获取子矩阵

您可以在循环中使用
nchoosek

for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating
  index{k} = nchoosek(1:5, k);
end

然后使用索引通过选择列来获取子矩阵,我不打算为您求解,但这里有一些有用的函数。您必须明确您的输入内容

>> nchoosek([1:4],3)

ans =

     1     2     3
     1     2     4
     1     3     4
     2     3     4

>> combntns([1:3],2)

ans =

     1     2
     1     3
     2     3

>> perms([1:3])

ans =

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

我不打算为您解决它,但这里有一些有用的函数。您必须明确您的输入内容

>> nchoosek([1:4],3)

ans =

     1     2     3
     1     2     4
     1     3     4
     2     3     4

>> combntns([1:3],2)

ans =

     1     2
     1     3
     2     3

>> perms([1:3])

ans =

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

列、行或两者的组合?举个简单的例子,比如4乘3,会有帮助。你的问题严重缺乏信息。你们想要一个第一列的矩阵,第一列和第二列的矩阵,等等?或者您想在行中进行所有可能的值排列吗?@OlegKomarov我已经编辑了问题。对于前面的问题,很抱歉。col5 col3也是可能的解决方案?@0x90否。总组合将为2^5-1,因此col5-col3将是col3-col5的代表。列、行或两者的组合?举个简单的例子,比如4乘3,会有帮助。你的问题严重缺乏信息。你们想要一个第一列的矩阵,第一列和第二列的矩阵,等等?或者您想在行中进行所有可能的值排列?@OlegKomarov我已经编辑了问题。对于前面的问题,很抱歉。col5 col3也是可能的解决方案?@0x90否。总组合将为2^5-1,因此col5-col3将是col3-col5的一个代表。感谢您的输入。我可以在未来使用这些。谢谢。第一个函数完成了工作感谢您的输入。我可以在未来使用这些。谢谢。第一个函数完成了这项工作,非常感谢。对matlab中的所有内容都非常简单感到惊讶:)感谢您的精彩回答。非常感谢。对matlab中的所有内容都非常简单感到惊讶:)感谢您的精彩回答。