MATLAB's custom distance function example for two matrices.

12 次查看(过去 30 天)
How does MATLAB's @distfun work for two matrices. Suppose:
X1 = rand(5);
X2 = rand(3);
How to compute the KL-Divergence between X1 and X2 using @distfun? I do not see any non trivial distance example in manual. Please advise.
  2 个评论
Viren Gupta
Viren Gupta 2018-8-3
I checked the documentation of @distfun here and it says that if Z1 and Z2 are 2 inputs to the function, then Z1 need to have a single row.
Apart from this how are you trying to find KL divergence between 2 vectors of different length?
hello_world
hello_world 2018-8-3
@Viren Gupta: I also followed document and trivial example given there. Can you show me a working example for non trivial cases, such as, KL Divergence which depends on two probability distributions P and Q. So, you may generate two random distributions.

请先登录,再进行评论。

采纳的回答

Viren Gupta
Viren Gupta 2018-8-7
Here is a working example if you want to find KL divergence between 2 vectors.
z1=rand(1,5);
z2=rand(1,5);
X=[z1;z2];
fn=@distfun;
d=pdist(X,fn);
function f = distfun(x1,x2)
l=size(x1,2);
KL=0;
for i=1:l
KL=KL+x2(i)*log(x2(i)/x1(i));
end
f=KL;
end
Hope this helps.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Dimensionality Reduction and Feature Extraction 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by