logsum.m

来自「Continuous Profile Models (CPM) Matlab T」· M 代码 · 共 28 行

M
28
字号
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 + =
减小字号Ctrl + -
显示快捷键?