%%% BLIND INVERSE GAMMA CORRECTION %%% 1. generate random signal from N(0,1) of length 'dim' %%% 2. rescale signal into [0,1] %%% 3. apply gamma correction (g(u) = u^gamma) %%% 4. blindly estimate gamma by minimizing bicoherence %%% for each (possibly overlapping (wininc)) windowed signal (windim) %%% for each inverse gamma value in 'range' %%% apply inverse gamma %%% compute bicoherence of inverse gamma signal %%% end %%% estimated gamma = inverse gamma with minimum bicoherence %%% end %%% 5. final estimate = average of individual estimates %%% %%% RUN: %%% gammaest = blindgamma( 1.2, [0.5:0.1:2.0] ); %%% %%% REFERENCES: %%% www.cs.dartmouth.edu/farid/publications/ip01.html %%% www.cs.dartmouth.edu/farid/publications/josa01.html %%% function[gammaest] = blindgamma( gamma, range ) dim = 2^13; % signal length windim = 2^10; % window length wininc = 2^9; % window increment f = randn( 1, dim ); % original signal f = f - min(f); % normalize into [0,1] f = f / max(f); % fg = f.^gamma; % apply gamma ind = [1:windim]; k = 1; while( max(ind)