EMI.m
上传用户:xueli1969
上传日期:2022-07-27
资源大小:19k
文件大小:1k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. %Caculate MI of a and b in the region of the size(a)
  2. function [mi] = EMI(a,b)
  3. %
  4. [M,N] = size(a);
  5. % change a, b to range 1:n
  6. if min(a(:))<1
  7.     a = a-min(a(:))+1;
  8. end
  9. if min(b(:))<1
  10.     b = b-min(b(:))+1;
  11. end
  12.     
  13. % ncolora = max(a(:))-min(a(:))+1;
  14. % ncolorb = max(b(:))-min(b(:))+1;
  15. ncolora = max(a(:));
  16. ncolorb = max(b(:));
  17. hab = zeros(ncolora,ncolorb);
  18. ha = zeros(1,ncolora);
  19. hb = zeros(1,ncolorb);
  20. %count begins
  21. [M,N]=size(a);
  22. for i=1:M
  23.     for j=1:N
  24.        indexx =  a(i,j);
  25.        indexy =  b(i,j);
  26.        hab(indexx,indexy) = hab(indexx,indexy)+1;
  27.        ha(indexx) = ha(indexx)+1;
  28.        hb(indexy) = hb(indexy)+1;
  29.    end
  30. end
  31. %cal ha,hb,hab
  32. hsum = sum(sum(hab));
  33. index = find(hab~=0);
  34. p = hab/hsum;
  35. Hab = sum(sum(-p(index).*log(p(index))));
  36. hsum = sum(sum(ha));
  37. index = find(ha~=0);
  38. p = ha/hsum;
  39. Ha = sum(sum(-p(index).*log(p(index))));
  40. hsum = sum(sum(hb));
  41. index = find(hb~=0);
  42. p = hb/hsum;
  43. Hb = sum(sum(-p(index).*log(p(index))));
  44. mi = Ha+Hb-Hab;
  45. % cal EMI
  46. % feature efficiency coefficient
  47. n =2/5;
  48. if Hab ~= 0
  49.     e = (mi^n) / ( Hab^(1-n));
  50. else% not usual happen, just for test
  51.     e = -1;%(mi^n) / ( Hab^(1-n)+1e-10);
  52. end
  53. mi = e;
  54. % %