phase angle from discrte hilbert tranform

If I have time series data and I want to Hilbert transformation it to get the phase angle as a function of time what do I need to do? Sorry I'm completely stumped and brand new to matlab

 採用された回答

Wayne King
Wayne King 2011 年 12 月 2 日

0 投票

Hi Bobby, the derivative of the phase of the analytic signal is the instantaneous frequency that is true. But estimating the instantaneous frequency is tricky business. There are a number of papers on algorithms for that. It's very sensitive to noise for one thing. Yes, in the simple case I gave you, you can fit a least squares line to the unwrapped phase and get the frequency. But that is because the instantaneous frequency is the same everywhere.
x = cos(pi/4*(0:99));
y = hilbert(x);
sigphase = (unwrap(angle(y)))';
X = ones(length(sigphase),2);
X(:,2) = (1:length(sigphase))';
beta = X\sigphase;
beta(2)
Note beta(2) is very close to the frequency of pi/4. But this is a very simple example where the frequency is not changing.

3 件のコメント

bobby
bobby 2011 年 12 月 2 日
Thanks so much wayne, I am trying to expand on this to use with a time series of about 2 million data points. But it is noisy, am I pretty much out of luck on this being a simple process then?
Wayne King
Wayne King 2011 年 12 月 2 日
I can recommend:
B. Boashash, “Estimating and interpreting the instantaneous frequency of asignal. II. Algorithms and applications,” Proceedings of the IEEE, vol. 80, no. 4, pp. 540–568, 1992.
Wayne King
Wayne King 2011 年 12 月 2 日
yea, it definitely won't be a simple process. If you're feeling ready to head into the thick of it, write back and I can suggest a few routes, but it's definitely tricky business. Don't get me wrong, it's a fruitful endeavor, but not straightforward.

サインインしてコメントする。

その他の回答 (1 件)

Wayne King
Wayne King 2011 年 12 月 2 日

0 投票

Hi, Do you really just want the phase function, or are you trying to get the instantaneous frequency. At any rate, you can get the phase with:
x = cos(pi/4*(0:100));
y = hilbert(x);
sigphase = atan2(imag(y),real(y));
% or
sigphase = angle(y);

3 件のコメント

Wayne King
Wayne King 2011 年 12 月 2 日
I should add you need to be careful how you interpret the phase here, it's much more straightforward to interpet the magnitude of the Hilbert transform.
bobby
bobby 2011 年 12 月 2 日
Well, I think that is what I want, I am reading a paper that says they use the hilbert transform method of finding a frequency that was described by gabor. It appears that from the hilbert transform I want to get a graph of the phase as a function of time and the least squares fit to the line would be the frequency. Would that make sense?
Fatma Keskin
Fatma Keskin 2023 年 5 月 20 日
If we have an amplitude modulated signal, what would the instantaneous phase give me? Phase of the envelope or the actual oscillation?

サインインしてコメントする。

製品

質問済み:

2011 年 12 月 2 日

コメント済み:

2023 年 5 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by