【问题标题】:Matlab: How to find all possible combinations from 2 vectors?Matlab:如何从 2 个向量中找到所有可能的组合?
【发布时间】:2014-07-19 15:35:35
【问题描述】:

V1V2 分别是向量 1x201x10

如何找到V1 中的15 个元素和V2 中的3 个元素的所有可能组合?

所选元素的顺序并不重要。

【问题讨论】:

  • 该结果集将是巨大的(数以百万计的组合):您采用nchoosek(20,15)nchoosek(10,3),然后从这两组中取出所有可能的组合.. 您需要全部吗?
  • @Amro:是的,我认为是 1860480 种组合!
  • @Amro:我知道结果是从两组中取所有可能的组合,但我不知道如何在不使用for循环的情况下将其翻译成matlab代码。

标签: matlab combinations


【解决方案1】:

这是一种方法:

% n-choose-k from each vector
A = nchoosek(1:20,15);
B = nchoosek(1:10,3);

% all combinations from the two sets
[X,Y] = ndgrid(1:size(A,1), 1:size(B,1));
C = [A(X(:),:) B(Y(:),:)];

结果包含来自两个向量 V1 和 V2 的索引:

>> whos C
  Name            Size                Bytes  Class     Attributes

  C         1860480x18            267909120  double    

如果您想直接将其应用于实际向量,请将前两行替换为:

A = nchoosek(V1,15);    % V1 is a 1x20 vector
B = nchoosek(V2,3);     % V2 is a 1x10 vector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多