arrays - 汇总行值的所有排列

标签 arrays algorithm matlab matrix

我在 MATLAB 中遇到问题,我认为这可以很好地解决,例如使用递归。我只是想知道是否有使用一些内置函数的更优雅(可能是矢量化)的解决方案。

问题来了:

给定一个 (n x 2) 矩阵。找到所有可能的总和,其中总和中每一行恰好有一个值。

示例 1:

A = [a b; 
     c d]; % I use variable names/symbolic values to make it clearar

结果 2:

result = [a+c; a+d; b+c; b+d];

示例 2:

A = [a b;
     c d;
     e f];

result = [a+c+e; a+c+f; a+d+e; a+d+f; b+c+e; b+c+f; b+d+e; b+d+f];

我希望我的问题很清楚 :) 谢谢

最佳答案

[m n] = size(A);
cols = dec2base(0:n^m-1,n)+1 - '0'; %// all combinations of cols
ind = bsxfun(@plus, 1:m, (cols-1)*m).'; %'// convert into linear index
result = sum(A(ind));

关于arrays - 汇总行值的所有排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24033147/

相关文章:

algorithm - 许多(超过两个)没有孔的多边形的联合

algorithm - 算法时间复杂度的输入单元

algorithm - Haskell 上枚举总和和乘积类型的通用算法?

matlab - 'imfilter' 和 'conv2' 之间的区别 [MATLAB]

matlab - matlab oop中的私有(private)构造函数

javascript - JavaScript 字符串数组中的顺序差异

python - 有没有任何pythonic方法可以找到数组中特定元组元素的平均值?

javascript - JavaScript箭头函数问题-多重箭头函数嵌套

javascript - 如何保留相同的对象但只替换一个属性?

windows - 将 FFTW 链接到 Matlab Mex 文件