Shannon wavelet entropy

Hello,

I look for a function similar to the wentropy function in the Wavelet Toolbox of Matlab. In an older code I used to following form:

H = -wentropy( DataArray , 'shannon' );

I look in several packages (Wavelet.jl, WaveletsExt.jl, Entropies.jl), finally in ComplexityMeasures.jl and found a similar approach (ComplexityMeasures.Shannon) but no example that I can understand how to use the function.

Does anyone know an approach to implement the Matlab function in Julia?

Kind regards,

Martin

2 Likes

I think you want the entropy() function in ComplexityMeasures, using the Shannon measure. The relevant documentation is around here.

Hello,

thanks for the hint, I checked it and it works well for time series ( H = entropy(WaveletOverlap(), DATA) ) , what I need is this for 2D (image) data. One approach could be to calculate it line by line, but this is very slow. Is there a faster implementation available. I looked in SpatialDispersion and SpatialOrdinalPatterns but stencil parameters seems to be not senseful in my case.

/Martin

I don’t know enough about your problem to say how it should map to the SpatialDispersion calculation.

Having a look at wentropy in Matlab tells me they’re doing something substantially less sophisticated than ComplexityMeasures.jl: they compute the probability distribution of the input pixels (with bins depending on pixel type) and then returning -sum(p.*log2(p)). This is considerably simpler than what I steered you toward.

The way to match Matlab’s wentropy is to start with StatsBase.Histogram, choosing the normalization. The rest should be trivial.