# MATLAB's custom distance function example for two matrices.

12 次查看（过去 30 天）
hello_world 2018-7-22

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 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 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 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.

### 类别

Help CenterFile Exchange 中查找有关 Sources 的更多信息

### Community Treasure Hunt

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

Start Hunting!