📄 logsum.m
字号:
function ls = logsum(xx,dim)% ls = logsum(x,dim)%% returns the log of sum of logs, summing over dimension dim% computes ls = log(sum(exp(x),dim))% but in a way that tries to avoid underflow/overflow%% basic idea: shift before exp and reshift back% log(sum(exp(x))) = alpha + log(sum(exp(x-alpha)));%if(size(xx,dim)<=1) ls=xx; return; endxdims=size(xx);if(nargin<2) nonsingletons=find(xdims>1); dim=nonsingletons(1);end% note that max(xx,[],dim) simply means to operate on dimension dim% xdims(dim) is how many numbers you are adding in your sumalpha = max(xx,[],dim) - log(realmax)/2 + 2*log(xdims(dim));repdims=ones(size(xdims)); repdims(dim)=xdims(dim);ls = alpha+log(sum(exp(xx-repmat(alpha,repdims)),dim));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -