Revision 7506f82ee300238c506b7add7e698901333bf177 authored by Cam Higgins on 24 August 2020, 14:32:36 UTC, committed by Cam Higgins on 24 August 2020, 14:32:36 UTC
1 parent dd0a8e4
GammaEntropy.m
function Entr = GammaEntropy(Gamma,Xi,T,order)
% Entropy of the state time courses
Entr = 0; K = size(Gamma,2);
for tr = 1:length(T)
t = sum(T(1:tr-1)) - (tr-1)*order + 1;
Gamma_nz = Gamma(t,:);
Gamma_nz(Gamma_nz==0) = realmin;
if any(isinf(log(Gamma_nz(:)))), Gamma_nz(Gamma_nz==0) = eps; end
Entr = Entr - sum(Gamma_nz.*log(Gamma_nz));
if ~isempty(Xi)
t = (sum(T(1:tr-1)) - (tr-1)*(order+1) + 1) : ((sum(T(1:tr)) - tr*(order+1)));
Xi_nz = Xi(t,:,:);
Xi_nz(Xi_nz==0) = realmin;
if any(isinf(log(Xi_nz(:)))), Xi_nz(Xi_nz==0) = eps; end
Psi = zeros(size(Xi_nz)); % P(S_t|S_t-1)
for k = 1:K
sXi = sum(permute(Xi_nz(:,k,:),[1 3 2]),2);
Psi(:,k,:) = Xi_nz(:,k,:)./repmat(sXi,[1 1 K]);
end
Psi(Psi==0) = realmin;
if any(isinf(log(Psi(:)))), Psi(Psi==0) = eps; end
Entr = Entr - sum(Xi_nz(:).*log(Psi(:))); % entropy of hidden states
end
end
if isnan(Entr(:))
error(['Error computing entropy of the state time courses - ' ...
'Out of precision?'])
end
end
Computing file changes ...