能量熵介绍附代码
衡量信号复杂度和能量分布的不确定性的方法。能量熵的基本思想是通过分析信号的能量分布,评估其复杂度和随机性。
计算每个子带能量占总能量的比例。
设输入信号为:
x
[
n
]
x[n]
x[n]
则信号的能量为:
E
[
n
]
=
x
[
n
]
2
E[n]=x[n]^2
E[n]=x[n]2
然后,计算归一化的能量:
p
[
n
]
=
E
[
n
]
∑
i
=
1
N
E
[
i
]
p[n] = \frac{E[n]}{\sum_{i=1}^N E[i]}
p[n]=∑i=1NE[i]E[n]
最后,能量熵的公式为:
H
=
−
∑
n
=
1
N
p
[
n
]
log
(
p
[
n
]
+
ϵ
)
H = -\sum_{n=1}^N p[n] \log(p[n] + \epsilon)
H=−n=1∑Np[n]log(p[n]+ϵ)
其中
ϵ
\epsilon
ϵ
是一个非常小的数值,用来避免对零取对数的数学错误。
完整的能量熵公式可以写成:
H
=
−
∑
n
=
1
N
(
x
[
n
]
2
∑
i
=
1
N
x
[
i
]
2
)
log
(
x
[
n
]
2
∑
i
=
1
N
x
[
i
]
2
+
ϵ
)
H = -\sum_{n=1}^N \left( \frac{x[n]^2}{\sum_{i=1}^N x[i]^2} \right) \log\left( \frac{x[n]^2}{\sum_{i=1}^N x[i]^2} + \epsilon \right)
H=−n=1∑N(∑i=1Nx[i]2x[n]2)log(∑i=1Nx[i]2x[n]2+ϵ)
能量熵反映了信号能量分布的不确定性,可用来区分不同类型的信号或检测信号中的变化。
附matlab代码:
代码见公众号“慢慢的不急”