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?