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