包络熵matlab代码
时间: 2023-09-04 07:11:39 浏览: 42
以下是用MATLAB实现包络熵(Envelope Entropy)的代码:
```matlab
function [EEG_EnvelopEntropy] = EnvelopEntropy(EEG_Signal, m, r)
% EEG_Signal: 输入的EEG信号
% m: 重构的子空间维数
% r: 重构的半径
% 求包络信号
EEG_Envelop = abs(hilbert(EEG_Signal));
% 归一化
EEG_Envelop = EEG_Envelop / max(EEG_Envelop);
% 重构相空间
EEG_EnvelopMatrix = zeros(length(EEG_Envelop) - m + 1, m);
for i = 1:length(EEG_Envelop) - m + 1
EEG_EnvelopMatrix(i, :) = EEG_Envelop(i:i+m-1);
end
% 计算每个点的包络熵
EEG_EnvelopEntropy = 0;
for i = 1:length(EEG_Envelop) - m + 1
count = 0;
for j = 1:length(EEG_Envelop) - m + 1
if norm(EEG_EnvelopMatrix(i,:) - EEG_EnvelopMatrix(j,:)) < r
count = count + 1;
end
end
EEG_EnvelopEntropy = EEG_EnvelopEntropy - (count/(length(EEG_Envelop) - m + 1))*log(count/(length(EEG_Envelop) - m + 1));
end
end
```
使用方法:
```matlab
EEG_Signal = % 输入EEG信号(一维向量)
m = % 重构的子空间维数
r = % 重构的半径
EEG_EnvelopEntropy = EnvelopEntropy(EEG_Signal, m, r); % 计算包络熵
```
注意:在计算包络熵之前需要先安装Hilbert包,方法如下:
```matlab
% 安装Hilbert包
!pip install Hilbert
```
然后在Matlab中运行即可。