суммирование всех элементов в matlab без использования оператора двоеточия - PullRequest
6 голосов
/ 05 марта 2012

Я хочу суммировать все элементы матрицы в 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)))

Но количество сумм будет равно размеру моей матрицы.Это выглядит некрасиво, и размер матрицы может измениться.

Мне любопытно, есть ли способ сделать это.

1 Ответ

15 голосов
/ 05 марта 2012

используйте reshape вместо (:) оператор:

sum(reshape(gammaln(A),[],1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...