在不使用冒号运算符的情况下对matlab中的所有元素求和

时间:2012-03-05 09:41:57

标签: matlab

我想在Matlab中求和矩阵的所有元素。如果我有一个名为A的矩阵,那么我可以通过调用

来对所有元素求和
sum(A(:));

但是我想对从这样的函数返回的元素求和:

sum(gammaln(A))  % where gammaln is the logarithm of gamma function

当然,我可以分两步完成:

B = gammaln(A);
sum(B(:));

但是在这里我创建了一个B矩阵,我根本不需要它。我也可以这样做:

sum(sum(gammaln(A)))

但是,sum的数量将等于我的矩阵的维数。它看起来很丑,矩阵维度可能会发生变化。

我很好奇是否有任何办法这样做。

1 个答案:

答案 0 :(得分:15)

使用reshape代替(:)运营商:

sum(reshape(gammaln(A),[],1))