【问题标题】:Element-wise matrix addition on output of cellfun in MatlabMatlab中cellfun输出的元素矩阵加法
【发布时间】:2014-03-18 10:46:33
【问题描述】:

我有一个函数d2l_dgamma_dgammaT,它输出 6×6 矩阵。我想在不使用下面的 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

【问题讨论】:

  • A_gamma_temp 是一个大小为 6x6 还是 6x1 的元胞数组?

标签: matlab matrix


【解决方案1】:

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

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

为了以后的参考,如果你真的很有帮助

请记住,我们对您想做什么或已经做什么一无所知一无所知。如果您花更多的时间来提出问题,您就更有可能得到一个好的答案,而且速度也更快。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-29
      • 2023-04-07
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      相关资源
      最近更新 更多