Matlab中cellfun输出的元素矩阵加法

时间:2014-03-18 10:46:33

标签: matlab matrix

我有一个输出6×6矩阵的函数d2l_dgamma_dgammaT。我想在不使用下面的for循环的情况下对这些矩阵执行逐元素加法。 A_gamma_temp是包含6x6矩阵的单元阵列,A_gamma应该是包含所有这些矩阵的元素和的单个6x6矩阵。我怎么能这样做?

A_gamma_temp = cellfun(@(a,b) d2l_dgamma_dgammaT(sigma_sq, tau_sq, a, b), ...
    wb_sorted, zb_sorted, 'uniformoutput', false);

A_gamma = zeros(6,6);

for ii = 1:size(A_gamma_temp, 1)
    A_gamma = A_gamma + A_gamma_temp{ii};
end

2 个答案:

答案 0 :(得分:1)

假设A_gamma_temp是一个包含6×6矩阵的单元格数组,并且A_gamma应该是一个6×6矩阵,它是所有这些单独矩阵的总和,这应该可行:

A_gamma = sum(cat(3, A_gamma_temp{:}),3)

为了将来参考,如果您

,这确实有帮助

请记住,我们知道没有关于您想要做什么或已经做过什么。如果你花更多的时间来制定问题,你就更有可能得到一个好的答案,而且也更快。

答案 1 :(得分:0)

如果您正在寻找单个数字结果,您也可以尝试这个 -

A_gamma = sum(vertcat(A_gamma_temp{:}))

由于OP有这个 - A_gamma = zeros(6,6);,我不确定是否需要一个数字。