matlab中两个向量的序列生成

matlab中两个向量的序列生成,matlab,matrix,combinations,combinatorics,cartesian-product,Matlab,Matrix,Combinations,Combinatorics,Cartesian Product,比如说,我有两个向量[abc]和[efg] 现在,我想要一个如下的矩阵: [A B C; E F G ; A F G; A F C; E B C; E B G] 下面是我提到的,适用于处理字符串集而不是数字数据: sets = {{'A' 'E'}; % first position {'B' 'F'}; % second position {'C' 'G'}}; % third position [val,~,idx] = cellfun(@un

比如说,我有两个向量
[abc]
[efg]

现在,我想要一个如下的矩阵:

[A B C; E F G ;  A F G; A F C; E B C; E B G]
下面是我提到的,适用于处理字符串集而不是数字数据:

sets = {{'A' 'E'};   % first position
        {'B' 'F'};   % second position
        {'C' 'G'}};  % third position

[val,~,idx] = cellfun(@unique, sets, 'Uniform',false);
indices = cell(numel(idx),1);
[indices{:}] = ndgrid(idx{:});
cartProd = cellfun(@(ind,v) v(ind(:)), indices, val, 'Uniform',false);
cartProd = vertcat(cartProd{:})';
这将适用于任意数量的集合,每个集合具有任意数量的元素

上述示例的结果组合(每行一个):


请提供更多的细节,以及到目前为止你尝试过的例子。A、B、。。。?双人、双人,。。。?还有,它们是标量吗?看起来你在做笛卡尔积(尽管你缺少一些组合:ABG,EFC)。看这个:这是另一个相关的问题:从这个例子很难告诉你想要什么。你应该解释一下
>> cartProd
cartProd = 
    'A'    'B'    'C'
    'E'    'B'    'C'
    'A'    'F'    'C'
    'E'    'F'    'C'
    'A'    'B'    'G'
    'E'    'B'    'G'
    'A'    'F'    'G'
    'E'    'F'    'G'