特定配置的matlab算法

matlab algorithm for specific configurations

如何在 matlab 中有效地实现这个特定的组合数学问题?

我有一个可能值列表 {{v1_1,...v1_n1},{v2_1, ..., v2_n2}, .. . {vm_1, ... , vm_nm}} .我需要以这种方式生成所有可能的配置:

列表示例

{{1,2}, {3}, {2,5}}

对应的配置为

  1 3 2
  1 3 5
  2 3 2
  2 3 5

在我的例子中,max(n1,...,nm) = 6,m 是小整数 (3 < m < 30)

列表在我的代码中由二进制矩阵 m x 6 表示

示例(3 x 6 案例): {{1,2}, {3}, {2,5}}

对应的二进制矩阵

 1 1 0 0 0 0  ...  {1,2}
 0 0 1 0 0 0  ...  {3}
 0 1 0 0 1 0  ...  {2,5}

在此先感谢您的帮助。

正如@TroyHaskin 所说,ndgrid 是必经之路。最重要的是你只需要做一些预处理和 post 处理。

x = {{1,2}, {3}, {2,5}};
a = cellfun(@cell2mat, x, 'UniformOutput', 0);
b = cell(size(a));
[b{:}] = ndgrid(a{:});
c = cellfun(@squeeze, b, 'UniformOutput', 0);
d = cell2mat(cellfun(@(x) reshape(x, [], 1), c,'uni',0));