I am trying to calculate shannon entropy of CWT
. I am not sure if I am doing it right. Assume that $W(a_i,t), i=1;2;...;M$ is a set of wavelet coefficients. The Shannon wavelet entropy is calculated by:
$E=-\sum_{i=1}^{M}d_i log(d_i)$ $\rightarrow$ where $d_i=\frac{|W(a_i,t)|}{\sum_{j=1}^{M}W(a_j,t)}$
I am confused how to calculate $E$. for example I have a coefficient matrix with size of $M\times N$, $M$ is scales number and $N$ is time segments. first I have to calulate $d_i$, this is my main problem. this is the wavelet coefficient matrix :
$W_{M\times N} = \begin{pmatrix} w_{a_1,1} & w_{a_1,2} & \cdots & w_{a_1,N} \\ w_{a_2,1} & w_{a_2,2} & \cdots & w_{a_2,N} \\ \vdots & \vdots & \ddots & \vdots \\ w_{a_M,1} & w_{a_M,2} & \cdots & w_{a_M,N} \end{pmatrix}$
hmm i am pretty sure i am wrong, can anyone help? for example tell me how can i calculate $d_4$?
Here I have right a little Matlab script to calculate shannon entropy of CWT.
Is it right or wrong? and what should I do?
[M,N]=size(coeffs);
for js=1:M
Ej(js)=sum(abs(coeffs(js,:)));
end;
Etot=sum(Ej);
Pj=Ej./Etot;
%shannon entropy
shan_entr=-sum(Pj.*log(Pj));
Answer
Yes. Your code does compute the same thing as the formula from the paper.
No comments:
Post a Comment