# Remove spurious peaks of Hilbert transform

I want to eliminate spurious peaks of Hilbert transform for finding glottal closure in the linear prediction (LP) residual. I have the following 4 steps:

1. Down-sample.
2. Hilbert Transform.
3. Identify Peaks in Hilbert Transform.
4. Consider this hypothesis that time gap between two successive glottal closure instance is not likely to vary in the adjacent pitch period.

Case 3 would help to find peaks such as candidate and spurious peaks. However case 4 improve our results for best peaks candidate for glottal closure.

I have written the following MATLAB code:

e_downsample = downsample(e,2);
DFT=fft(e);
hilbert_e=ifft(complex(imag(DFT(1:(length(DFT)/2))),real(DFT(1:(length(DFT)/2)))));
h_e=sqrt(e_downsample(:).^2-hilbert_e(:).^2);
[pks,locs] = findpeaks(abs(h_e));
figure,
plot(abs(h_e));


I will really appreciate, if anyone help me in cases 3 and 4.

• Could you be more explicit in the link between the question title and the items 3 and 4 of your text? I'm pretty sure a few example illutstration woul dhelp people answering you. – sansuiso Apr 11 '13 at 8:40
• Tnx for your attention. According to title, we have various peaks such as spurious and glottal which are selected by case 3. Then, case 4 help to find remove spurious peaks. – Ali Bodaghi Apr 11 '13 at 8:58
• @AliBodaghi Two hopefully helpful things - MATLAB has hilbert command already, and signal + its Hilbert transform is called analytic signal. Hilbert transform uses entire signal to compute. Perhaps bandpassing the signal before hand will get rid of spurious peaks. – geometrikal Jun 14 '13 at 14:05