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

Cav*_*man 6 matlab

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

sum(A(:));
Run Code Online (Sandbox Code Playgroud)

但我想总结从这样的函数返回的元素:

sum(gammaln(A))  % where gammaln is the logarithm of gamma function
Run Code Online (Sandbox Code Playgroud)

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

B = gammaln(A);
sum(B(:));
Run Code Online (Sandbox Code Playgroud)

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

sum(sum(gammaln(A)))
Run Code Online (Sandbox Code Playgroud)

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

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

zen*_*poy 15

使用reshape而不是(:)运算符:

sum(reshape(gammaln(A),[],1))
Run Code Online (Sandbox Code Playgroud)