我在 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/