2012-03-05 58 views
5

Tôi muốn tổng hợp tất cả các phần tử ma trận trong Matlab. Nếu tôi có một ma trận gọi là A, sau đó tôi có thể tổng hợp tất cả các yếu tố bằng cách gọitổng hợp tất cả các phần tử trong MATLAB mà không cần sử dụng toán tử dấu hai chấm

sum(A(:)); 

Nhưng tôi muốn tổng hợp các yếu tố trở về từ một hàm như thế này:

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

Dĩ nhiên tôi có thể làm điều này theo hai bước:

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

Nhưng ở đây tôi tạo ma trận B mà tôi không cần chút nào. Và tôi cũng có thể làm theo cách này:

sum(sum(gammaln(A))) 

Nhưng, số tiền sẽ bằng kích thước của ma trận của tôi. Nó trông xấu xí, và kích thước ma trận có thể thay đổi.

Tôi rất tò mò nếu có cách nào để thực hiện việc này.

Trả lời

14

sử dụng reshape thay vì (:) điều hành:

sum(reshape(gammaln(A),[],1)) 
Các vấn đề liên quan