% liczenie entropii różnymi metodami I = imread('cameraman.tif'); Ix = imread('circuit.tif'); Lpgm = imread('lena.pgm'); Lpgm30 = imread('lena30.pgm'); %losowe k = 10; % variable range n = 100; % number of variables x = ceil(k*rand(1,n)); y = ceil(k*rand(1,n)); % x = randi(k,1,n); % need statistics toolbox % y = randi(k,1,n); disp('*** Entropy x, y ***'); Hx = entropy(x); fprintf('Hx = %.4f\n', Hx); Hy = entropy(y); fprintf('Hy = %.4f\n', Hy); disp('*** Entropy Lpgm i Lpgm30 ***'); Hpgm = entropy(Lpgm); fprintf('Hpgm = %.4f\n', Hpgm); Hpgm30 = entropy(Lpgm30); fprintf('Hpgm30 = %.4f\n', Hpgm30); disp('*** Joint entropy xy***:'); Hxy = jointEntropy(x,y); fprintf('Hxy = %.4f\n', Hxy); disp('*** Conditional entropy x|y ***'); Hx_y = condEntropy(x,y); fprintf('Hx_y = %.4f\n', Hx_y); disp('*** Mutual information x;y ***'); Ixy = mutInfo(x,y); fprintf('Ixy = %.4f\n', Ixy); disp('*** Relative entropy (KL divergence) ***'); Dxy = relatEntropy(x,y); fprintf('Dxy = %.4f\n', Dxy); disp('*** Normalized mutual information x;y ***'); nIxy = nmi(x,y); fprintf('nIxy = %.4f\n', nIxy); disp('*** Nomalized variation information I_v(x,y) ***'); vIxy = nvi(x,y); fprintf('vIxy = %.4f\n', vIxy); %% H(x|y) = H(x,y)-H(y) i1 = isequalf(Hx_y,Hxy-Hy); %% I(x,y) = H(x)-H(x|y) i2 = isequalf(Ixy,Hx-Hx_y); %% I(x,y) = H(x)+H(y)-H(x,y) i3 = isequalf(Ixy,Hx+Hy-Hxy); %% I_n(x,y) = I(x,y)/sqrt(H(x)*H(y)) i4 = isequalf(nIxy,Ixy/sqrt(Hx*Hy)); %% I_v(x,y) = (1-I(x,y)/H(x,y)) i5 = isequalf(vIxy,1-Ixy/Hxy); fprintf('efekty porównań: %d %d %d %d %d\n', i1,i2,i3,i4,i5);