For a real time series x(t), its analytic signal x(t) is defined as
x(t) = x(t) – iH[x(t)]
Let us consider an example of a monochromatic signal 𝑥(𝑡) = 5 sin(10𝑡 + 3).
Now, let us consider a more complex function
x(t) = 1*sin(2𝜋10𝑡 + 0.3) + 2*sin(2𝜋20𝑡 + 0.2) + 3*sin(2𝜋30𝑡 + 0.4).
We can clearly observe that the Hilbert transform estimates the instantaneous frequency of a signal for monocomponent signals only.
Matlab Codes:
clear; close all; clc fs = 1e4; t = 0:1/fs:1; f1=10; f2=20; f3=30; x=1*sin(2*pi*f1*t+0.3)+2*sin(2*pi*f2*t+0.2)+3*sin(2*pi*f3*t+0.4); %x=5*sin(2*pi*10*t+3); y = hilbert(x); figure(1) plot(t,real(y),t,imag(y)) %xlim([0.01 0.03]) legend('real','imaginary') title('Hilbert Function') figure(2) subplot(3,1,1) env=abs(y); plot(t,x) xlabel('Time') title('Envelope') hold on plot(t,env) legend('original','envelope') subplot(312) instph=fs/(2*pi)*unwrap(angle(y)); plot(t,instph) xlabel('Time') ylabel('Phase (in rad)') grid on title('Instantaneous Phase') subplot(313) instfreq = fs/(2*pi)*diff(unwrap(angle(y))); plot(t(2:end),instfreq) xlabel('Time') ylabel('Hz') grid on title('Instantaneous Frequency')
Application of Hilbert Transform: