⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kld.m

📁 Non-parametric density estimation
💻 M
字号:
function KLD = kld(p1,p2,type,varargin)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% kld   An estimate of the KL-Divergence between two density estimates%%   kld(P,Q) estimates the KL-divergence D(P || Q) from sampling P and %               evaluating  at P and Q.%   Optional Arguments:%     kld(P,Q,'type') where 'type' is one of%       'rs','lln':  (default) use the evaluation of Q at the means of P%       'rand',N  :  use a stochastic approximation with N samples%       'unscent' :  use an unscented transform (deterministic) approximation%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Copyright (C) 2003 Alexander Ihler; distributable under GPL -- see README.txt% Discontinued (bad estimate, replaced by ISE for the only application)%       'abs'     :  use the absolute log ratio of P & Q eval'd at P's meansif (nargin < 3) type = 'rs'; end;switch (type),case {'rs','lln'}, KLD = evalAvgLogL(p1,p1) - evalAvgLogL(p2,p1);case 'rand',  N = varargin{1};              ptsE = sample(p1,N); pE = kde(ptsE,1);              KLD = evalAvgLogL(p1,pE) - evalAvgLogL(p2,pE);case 'unscent',               D = getDim(p1);  N = getNpts(p1);              ptsE = getPoints(p1); wts = getWeights(p1);              ptsE = repmat(ptsE,[1,2*D+1]);  % make 2*dim copies of each point              wts = repmat(wts,[1,2*D+1]);    %  (and its weight)               bw = getBW(p1,1:N);              for i=1:D                ptsE(i,(i-1)*N+(1:N)) = ptsE(i,(i-1)*N+(1:N)) + bw(i,:);                ptsE(i,(2*i-1)*N+(1:N)) = ptsE(i,(2*i-1)*N+(1:N)) - bw(i,:);              end;              pE = kde(ptsE,1,wts);              KLD = evalAvgLogL(p1,pE) - evalAvgLogL(p2,pE);case 'dist', error('Distance based estimate not yet implemented');otherwise, error('Unknown KL-divergence ''type'' argument');end; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -