Possible bug/limitation in hilbert() implementation?

조회 수: 1 (최근 30일)
Pythagorean
Pythagorean 2021년 1월 22일
댓글: Sharmin Kibria 2021년 2월 12일
Edit: Problem solved.
The hilbert() function is not very accurate at very low frequencies (below 20Hz or so perhaps). Highpass filtering solved the problem.
---------------------
There's something off about the results I'm getting from the abs(hilbert(x)) and envelope(x,y,'analytic') functions.
When I extract the envelope from a sine I get the correct results. But when I extract the envelope from pink noise the envelope amplitude is too high. About 1.5 times too high. The problem is only there with pink noise, not white noise.
I'm not an expert on the hilbert derived analytic envelope but this doesn't seem right to me?
Is this a limitation / side effect of the specific implementation of the hilbert() function in Matlab or is this somehow an inherent feature of the hilbert derived envelope?
If not, is there any other way to get a hilbert analytic envelope in Matlab that doesn't have the above problem?

채택된 답변

Chaitanya Mallela
Chaitanya Mallela 2021년 1월 29일
I have brought the issue to the notice of our developers. They will investigate the matter further.
  댓글 수: 2
Pythagorean
Pythagorean 2021년 1월 30일
I'm sorry. There's no problem with the hilbert() function.
I figured out just now what was causing the too high reading. The hilbert() function is not very good below 20Hz or so (which is to be expected I guess). Highpass filtering the pink noise solved the problem!
Sharmin Kibria
Sharmin Kibria 2021년 2월 12일
Hi,
I am a developer in the signal processing toolbox team. I looked into the issue and this is an expected behavior of the hilbert function.
Hilbert function kills the DC part of a signal. The envelope function internally fixes this issue by adding and subtracting the numerical mean from the analytic signal.Although this approach by the envelope function works for most deterministic signals and Gaussian noise, it does not work well with pink noise.
While Gaussian noise has a flat power spectral density for all frequencies, pink noise has power spectral density proportional to 1/f. In other words, pink noise has higher energy at lower frequencies. If we apply Hilbert transform on pink noise, it removes a significant portion of the signal's energy that cannot be adjusted by the envelope function. That is why you saw the discrepancy between the amplitude. This also explains what highpass filtering fixed your issue.
Thanks
Sharmin

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

태그

제품


릴리스

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by