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.