12 lines
352 B
Matlab
Executable File
12 lines
352 B
Matlab
Executable File
function s = logsumexp(X, dim)
|
|
% Compute log(sum(exp(X),dim)) while avoiding numerical underflow.
|
|
% By default dim = 1 (columns).
|
|
% Written by Mo Chen (sth4nth@gmail.com).
|
|
if nargin == 1
|
|
dim = find(size(X)~=1,1);
|
|
if isempty(dim), dim = 1; end
|
|
end
|
|
a = max(X,[],dim);
|
|
s = a+log(sum(exp(X-a),dim)); % TODO: use log1p
|
|
i = isinf(a);
|
|
s(i) = a(i); |