在matlab中求和所有元素而不使用冒号运算符

在matlab中求和所有元素而不使用冒号运算符,matlab,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))) 但是,和的数量将等于我

我想在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(reshape(gammaln(A),[],1))