Hilbert变换简介
在数学与信号处理的领域中,一个实值函数
x
(
t
)
x(t)
x
(
t
)
,其Hilbert变换记作
x
^
(
t
)
\hat{x}(t)
x
^
(
t
)
定义为:
x
^
(
t
)
=
H
[
x
(
t
)
]
=
x
(
t
)
∗
1
π
t
=
1
π
∫
−
∞
∞
x
(
τ
)
t
−
τ
d
τ
\begin{array}{ll} \hat{x}(t)& =H[x(t)]\\ &=x(t)*\frac{1}{\pi t}\\ &=\frac{1}{\pi }\int^{\infty}_{-\infty}\frac{x(\tau)}{t-\tau}d\tau \end{array}
x
^
(
t
)
=
H
[
x
(
t
)
]
=
x
(
t
)
∗
π
t
1
=
π
1
∫
−
∞
∞
t
−
τ
x
(
τ
)
d
τ
在此H标示为希尔伯特变换。
希尔伯特反变换:
x
(
t
)
=
H
−
1
[
x
(
t
)
]
=
−
1
π
∫
−
∞
∞
x
^
(
τ
)
t
−
τ
d
τ
\begin{array}{ll} x(t)&=H^{-1}[x(t)]\\ &=-\frac{1}{\pi }\int^{\infty}_{-\infty}\frac{\hat{x}(\tau)}{t-\tau}d\tau \end{array}
x
(
t
)
=
H
−
1
[
x
(
t
)
]
=
−
π
1
∫
−
∞
∞
t
−
τ
x
^
(
τ
)
d
τ
因此,希尔伯特变换结果
x
′
(
t
)
x'(t)
x
′
(
t
)
可以被解读为输入是
x
(
t
)
x(t)
x
(
t
)
的线性时不变系统的输出,而此系统的脉冲响应为
h
(
t
)
=
1
π
t
h(t)=\frac{1}{\pi t}
h
(
t
)
=
π
t
1
。
因此,Hilbert变换可以看成是将原始信号通过一个滤波器,或者一个转向器,这个系统的冲击响应为h(t)。
对
h
(
t
)
h(t)
h
(
t
)
做傅里叶变换,得到
H
(
ω
)
=
−
j
s
g
n
(
ω
)
=
∣
H
(
ω
)
∣
e
j
ϕ
(
ω
)
H(\omega)=-jsgn(\omega)\\ =\lvert H(\omega)\rvert e^{j\phi(\omega)}
H
(
ω
)
=
−
j
s
g
n
(
ω
)
=
∣
H
(
ω
)
∣
e
j
ϕ
(
ω
)
或者写成
H
(
ω
)
=
{
−
j
ω
>
0
0
ω
=
0
+
j
ω
<
0
H(\omega)= \left\{ \begin{array}{lcl} {-j} &\omega>0\\ 0&\omega=0\\ {+j} &\omega<0 \end{array} \right.
H
(
ω
)
=
⎩
⎨
⎧
−
j
0
+
j
ω
>
0
ω
=
0
ω
<
0
其中
s
g
n
(
)
sgn()
s
g
n
(
)
为符号函数。
s
g
n
(
ω
)
=
{
1
ω
>
0
0
ω
=
0
−
1
ω
<
0
sgn(\omega)= \left\{ \begin{array}{ll} {1} &\omega>0\\ 0&\omega=0\\ {-1} &\omega<0 \end{array} \right.
s
g
n
(
ω
)
=
⎩
⎨
⎧
1
0
−
1
ω
>
0
ω
=
0
ω
<
0
因此
x
(
ω
)
x(\omega)
x
(
ω
)
的虚部
x
^
(
ω
)
\hat{x}(\omega)
x
^
(
ω
)
的频率部分可以写成下式:
X
^
(
ω
)
=
X
(
ω
)
∗
H
(
ω
)
=
X
(
ω
)
∗
(
−
j
s
g
n
(
ω
)
)
=
−
j
X
(
ω
)
∗
s
g
n
(
ω
)
\begin{array}{ll} \hat{X}(\omega)&=X(\omega)*H(\omega)\\ &=X(\omega)*(-jsgn(\omega))\\ &=-jX(\omega)*sgn(\omega)\\ \end{array}
X
^
(
ω
)
=
X
(
ω
)
∗
H
(
ω
)
=
X
(
ω
)
∗
(
−
j
s
g
n
(
ω
)
)
=
−
j
X
(
ω
)
∗
s
g
n
(
ω
)
即:
X
^
(
ω
)
=
{
−
j
X
(
ω
)
ω
>
0
0
ω
=
0
j
X
(
ω
)
ω
<
0
\hat{X}(\omega)= \left\{ \begin{array}{ll} -jX(\omega) &\omega>0\\ 0&\omega=0\\ jX(\omega) &\omega<0 \end{array} \right.
X
^
(
ω
)
=
⎩
⎨
⎧
−
j
X
(
ω
)
0
j
X
(
ω
)
ω
>
0
ω
=
0
ω
<
0
也可以换成另一个写法()
X
^
(
ω
)
=
{
−
j
ω
∣
ω
∣
X
(
ω
)
ω
≠
0
0
ω
=
0
\hat{X}(\omega)= \left\{ \begin{array}{ll} -j\frac{\omega}{|\omega|}X(\omega) &\omega\neq0\\ 0&\omega=0\\ \end{array} \right.
X
^
(
ω
)
=
{
−
j
∣
ω
∣
ω
X
(
ω
)
0
ω
̸
=
0
ω
=
0
因为
X
(
t
)
X(t)
X
(
t
)
的频谱
X
(
ω
)
X(\omega)
X
(
ω
)
的导数为
X
′
(
ω
)
=
j
ω
X
(
ω
)
X'(\omega)=j\omega X(\omega)
X
′
(
ω
)
=
j
ω
X
(
ω
)
所以一个信号的HIlbert变换可以理解为一个信号的平滑梯度(smoothed gradient)。平滑核函数为频域中的
∣
ω
∣
−
1
|\omega|^{-1}
∣
ω
∣
−
1
。
从频谱上来看,这个滤波器将我们的原始信号的正频率部分乘以
−
j
-j
−
j
,也就是说,保持幅度不变的条件下,将相位移动了
−
p
i
/
2
-pi/2
−
p
i
/
2
,而对于负频率成分,移动了
p
i
/
2
pi/2
p
i
/
2
。
下面这个示意图很直观地表示了Hilbert变换,在这里我画出了对原始信号做1到4次Hilbert变换的频谱示意图,是为了说明Hilbert变换的几个性质:
首先,可以看到,两次希尔伯特变换后,原信号相位翻转了180°,所以,Hilbert逆变换的公式显而易见,就是将正变换加一个符号即可。另外,还可以看到,Hilbert变换四次后就变回本身了。
Hilbert变换的性质有:
-
It is anti-symmetric:
H(
−
x
)
=
−
H
(
x
)
H(-x)=-H(x)
H
(
−
x
)
=
−
H
(
x
)
-
It suppresses the DC component:
H(
0
)
=
0
H(0)=0
H
(
0
)
=
0
-
Its energy is equal to one for all nonzero frequencies:
∣H
(
x
)
∣
=
1
∀
x
≠
0
\begin{array}{ll} \lvert H(x)\rvert=1 & \forall x\ne0\end{array}
∣
H
(
x
)
∣
=
1
∀
x
̸
=
0
-
x(
t
)
x(t)
x
(
t
)
的Hilbert变换信号
x^
(
t
)
\hat{x}(t)
x
^
(
t
)
与
x(
t
)
x(t)
x
(
t
)
正交:
∫ω
x
^
(
t
)
x
(
t
)
d
t
=
0
\int_{\omega}\hat{x}(t)x(t)dt=0
∫
ω
x
^
(
t
)
x
(
t
)
d
t
=
0
Hilbert变换物理意义
解析过程概念
一个实值函数
x
(
t
)
x(t)
x
(
t
)
,其Hilbert变换记作
x
^
(
t
)
\hat{x}(t)
x
^
(
t
)
,则
x
(
t
)
x(t)
x
(
t
)
的解析信号为:
x
~
=
x
(
t
)
+
j
x
^
(
t
)
\widetilde{x}=x(t)+j\hat{x}(t)
x
=
x
(
t
)
+
j
x
^
(
t
)
这个过程有如下特点,首先,实部和虚部功率谱相同,自相关函数相同;另外,实部和虚部的互相关函数是一个奇函数。
其他的还有:
R
X
^
X
(
τ
)
=
−
R
^
X
(
τ
)
R
X
X
^
(
τ
)
=
R
^
X
(
τ
)
R
X
(
τ
)
=
2
[
R
X
(
τ
)
+
j
R
^
X
(
τ
)
]
R_{\hat{X}X}(\tau)=-\hat{R}_{X}(\tau)\\ R_{X\hat{X}}(\tau)=\hat{R}_{X}(\tau)\\ R_{X}(\tau)=2[R_{X}(\tau)+j\hat{R}_{X}(\tau)]
R
X
^
X
(
τ
)
=
−
R
^
X
(
τ
)
R
X
X
^
(
τ
)
=
R
^
X
(
τ
)
R
X
(
τ
)
=
2
[
R
X
(
τ
)
+
j
R
^
X
(
τ
)
]
解析信号的频谱只有正频段且幅度值为原来的两倍,实现了信号由双边谱转换成单边谱。
解析信号的功率谱也只有正频段,强度为原来的四倍。
X
~
(
ω
)
=
X
(
ω
)
2
u
(
ω
)
=
{
2
X
(
ω
)
ω
>
0
X
(
0
)
ω
=
0
0
ω
<
0
\widetilde{X}(\omega)=X(\omega)2u(\omega)=\\ \{ \begin{array}{lcl} {2X(\omega)} &\omega>0\\ {X(0)} &\omega=0\\ {0} &\omega<0 \end{array}
X
(
ω
)
=
X
(
ω
)
2
u
(
ω
)
=
{
2
X
(
ω
)
X
(
0
)
0
ω
>
0
ω
=
0
ω
<
0
欧拉公式(Euler‘s formula)的启发
e
i
x
=
c
o
s
(
x
)
+
i
s
i
n
(
x
)
e^{ix} = cos(x)+isin(x)
e
i
x
=
c
o
s
(
x
)
+
i
s
i
n
(
x
)
这个公式说明,用复指数信号可以表示成一个实数信号和一个虚数信号的和的形式。而且,这个实部和虚部是有关系的,一个是cos,一个是sin,两者相差pi/2,看sin和cos的傅里叶变换:
c o s ( ω 0 t ) cos(\omega_0t) c o s ( ω 0 t ) |
π [ δ ( ω + ω 0 ) + δ ( ω − ω 0 ) ] \pi[\delta(\omega+\omega_0)+\delta(\omega-\omega_0)] π [ δ ( ω + ω 0 ) + δ ( ω − ω 0 ) ] |
---|---|
s i n ( ω 0 t ) sin(\omega_0t) s i n ( ω 0 t ) |
j π [ δ ( ω + ω 0 ) − δ ( ω − ω 0 ) ] j\pi[\delta(\omega+\omega_0)-\delta(\omega-\omega_0)] j π [ δ ( ω + ω 0 ) − δ ( ω − ω 0 ) ] |
可以看出,在正频率上和负频率上两者的相位上的先后顺序刚好相反,但是都是保持90°的差值。
看到这里,大概可以理解Hilbert变换的用意了吧。欧拉公式实际上是一种特殊的,或者说,最简单的Hilbert变换。
复指数信号,就是等号左边的那个,频谱就是一个脉冲,而且是
2
π
δ
(
ω
−
ω
0
)
2\pi\delta(\omega-\omega_0)
2
π
δ
(
ω
−
ω
0
)
。只有正频率,且是两倍。虽然时域上是复数,但是在频域只有正分量,实际上是一种简化。
Hilbert解调原理
设窄带信号为
x
(
t
)
=
a
(
t
)
c
o
s
(
2
π
f
s
t
+
ϕ
(
t
)
)
x(t)=a(t)cos(2\pi f_st+\phi(t))
x
(
t
)
=
a
(
t
)
c
o
s
(
2
π
f
s
t
+
ϕ
(
t
)
)
其中
f
s
f_s
f
s
是载波频率,
a
(
t
)
a(t)
a
(
t
)
是
x
(
t
)
x(t)
x
(
t
)
的包络,
ϕ
(
t
)
\phi(t)
ϕ
(
t
)
是
x
(
t
)
x(t)
x
(
t
)
的相位调制信号。
由于
x
(
t
)
x(t)
x
(
t
)
是窄带信息,可设
a
(
t
)
=
[
1
+
∑
m
=
1
M
x
m
c
o
s
(
2
π
f
m
t
+
γ
m
)
]
a(t)=[1+\sum^{M}_{m=1}x_mcos(2\pi f_mt+\gamma_m)]
a
(
t
)
=
[
1
+
∑
m
=
1
M
x
m
c
o
s
(
2
π
f
m
t
+
γ
m
)
]
,
f
m
f_m
f
m
为调幅信号
a
(
t
)
a(t)
a
(
t
)
的频率分量,
γ
m
\gamma_m
γ
m
为
f
m
f_m
f
m
的各初相角。因此
a
(
t
)
a(t)
a
(
t
)
的各成分频率
f
m
<
<
f
s
f_m<<f_s
f
m
<
<
f
s
。
对
x
(
t
)
x(t)
x
(
t
)
进行Hilbert变换,并求解析信号,并使用欧拉公式表示:
z
(
t
)
=
x
(
t
)
+
x
^
(
t
)
=
A
(
t
)
e
j
Φ
(
t
)
z(t)=x(t)+\hat{x}(t)=A(t)e^{j\Phi(t)}
z
(
t
)
=
x
(
t
)
+
x
^
(
t
)
=
A
(
t
)
e
j
Φ
(
t
)
其中
A
(
t
)
=
a
(
t
)
=
[
1
+
∑
m
=
1
M
x
m
c
o
s
(
2
π
f
m
t
+
γ
m
)
]
A(t)=a(t)=[1+\sum^{M}_{m=1}x_mcos(2\pi f_mt+\gamma_m)]
A
(
t
)
=
a
(
t
)
=
[
1
+
∑
m
=
1
M
x
m
c
o
s
(
2
π
f
m
t
+
γ
m
)
]
,
Φ
(
t
)
=
2
π
f
s
t
+
ϕ
(
t
)
\Phi(t)=2\pi f_st+\phi(t)
Φ
(
t
)
=
2
π
f
s
t
+
ϕ
(
t
)
。
容易发现
a
(
t
)
=
A
(
t
)
=
x
2
(
t
)
+
x
^
2
(
t
)
a(t)=A(t)=\sqrt{x^2(t)+\hat{x}^2(t)}
a
(
t
)
=
A
(
t
)
=
x
2
(
t
)
+
x
^
2
(
t
)
ϕ
(
t
)
=
Φ
(
t
)
−
2
π
f
s
t
=
a
c
t
a
n
(
x
(
t
)
x
^
(
t
)
)
−
2
π
f
s
t
\phi(t)=\Phi(t)-2\pi f_st=actan(\frac{x(t)}{\hat{x}(t)})-2\pi f_st
ϕ
(
t
)
=
Φ
(
t
)
−
2
π
f
s
t
=
a
c
t
a
n
(
x
^
(
t
)
x
(
t
)
)
−
2
π
f
s
t
并可以利用相位求解出解调频率:
f
(
t
)
=
1
2
π
d
ϕ
(
t
)
d
t
=
1
2
π
d
Φ
(
t
)
d
t
−
f
s
f(t)=\frac{1}{2\pi}\frac{d\phi(t)}{dt}=\frac{1}{2\pi}\frac{d\Phi(t)}{dt}-f_s
f
(
t
)
=
2
π
1
d
t
d
ϕ
(
t
)
=
2
π
1
d
t
d
Φ
(
t
)
−
f
s
希尔伯特变换的意义
首先,将实数信号变换成解析信号的结果就是,把一个一维的信号变成了二维复平面上的信号,复数的模和幅角代表了信号的幅度和相位,如图所示
这样看来,似乎复数信号才是完整的,而实信号只是在复平面的实轴上的一个投影。我们知道,解析信号可以计算包络(瞬时振幅)和瞬时相位。在上图中可以看到,实际上我们计算的包络就是黑色的线围成的立体图形的边界在实部的投影,而计算这个边的投影也很简单,就是在复平面上的螺旋线中的每一个点的模值,也就是A(t) = sqrt(x^2(t) + Hilbert(x(t))^2),而瞬时相位就是虚部(Hilbert变换后的)和实部(原始信号)在某一时间点的比值的arctan,瞬时频率就是它的导数。