I found difficulty in understanding the Earth Mover’s Distance (EMD) from the MATLAB implementation. The method is actually implemented in this paper. Anyone help me to where EMD is implemented in this code.
cyclic_dist_matrix=zeros(256,256);
for ix=0:255
ix_bin_vec = [0,de2bi(ix,8)];
for jx=0:255
jx_bin_vec = [0,de2bi(jx,8)];
dist1=pdist2(ix_bin_vec,jx_bin_vec,'emd');
dist2=pdist2(wrev(ix_bin_vec),jx_bin_vec,'emd');
dist3=pdist2(ix_bin_vec,wrev(jx_bin_vec),'emd');
cyclic_dist_matrix(ix+1,jx+1) = min([dist1,dist2,dist3]);
end
end
%mds
Y=mdscale(cyclic_dist_matrix,3);
Y2=Y + abs(min(Y(:)));
Y2 = Y2 * (255/max(Y2(:)));
cyclic_map=uint8(Y2);
The MATLAB function
pdist2(X,Y, metric)calculates the distance between vectors X and Y using the metric in the third argument. Specifying'emd'as the metric tells MATLAB to use the earth movers distance metric.