【发布时间】:2014-06-23 11:06:15
【问题描述】:
我正在编写备用网格代码,需要将 N 个一维网格点(以向量形式编写)组合成所有可能点的数组。例如,可以将两个向量 (a,b) 与 (c,d,e) 混合,给出以下几点:
(a,c) (a,d) (a,e) (b,c) (b,d) (b,e)
Matlab 有一个叫做 combvec 的函数:
http://www.mathworks.co.uk/help/nnet/ref/combvec.html
我正在用 FORTRAN 编写这段代码,但是我找不到底层算法。代码需要接收 N (N>1) 个向量(即 2,3...N),每个向量可以是不同的长度。有人知道算法吗?
【问题讨论】:
-
@bdecaf,我猜它是可用于创建稀疏矩阵的向量。类似于 MATLAB 中的
sparse(vector1, vector2, values, size1, size2)(我看你是 MATLAB 人) -
是的,我正在考虑这个问题——这就是我删除评论的原因。
-
但是回到你所问的问题,称为cartesian product。搜索它会导致许多结果,包括 SO:generate a matrix of possible combinations using fortran
-
问题Complete set of combinations combining 3 set 有答案吗?这个问题与 Matlab 有关,我假设它是相关的,因为您添加了标签
matlab。 -
Here 是 Matlab 中的一个解决方案。翻译成 Fortran 应该不难
标签: matlab fortran combinations permutation sparse-matrix