多尺度排列熵用matlab实现
时间: 2023-09-05 20:13:13 浏览: 150
多尺度熵 matlab程序
3星 · 编辑精心推荐
多尺度排列熵(Multi-scale Permutation Entropy,MPE)是一种用于分析时间序列的非线性动力学特征的方法,它可以通过计算序列的排列熵来描述其复杂度。在不同的时间尺度下计算排列熵可以得到MPE。下面是用MATLAB实现MPE的代码:
```matlab
function [MPE] = MultiScalePermutationEntropy(X, m, tau, scale)
% X为时间序列,m为嵌入维度,tau为时间延迟,scale为尺度数
N = length(X);
MPE = zeros(1, scale);
for sc = 1:scale
Y = zeros(N-m*(sc-1), m);
for i = 1:N-m*(sc-1)
Y(i, :) = X((i-1)*tau+(1:m*sc));
end
[r, ~] = size(Y);
P = zeros(factorial(m*sc), 1);
for i = 1:r
[~, idx] = sort(Y(i, :));
perm = perms(idx);
[~, j] = ismember(idx, perm, 'rows');
P(j) = P(j)+1;
end
P = P/r;
MPE(sc) = -sum(P(P~=0).*log2(P(P~=0)));
end
end
```
其中,输入参数`X`为时间序列,`m`为嵌入维度,`tau`为时间延迟,`scale`为尺度数。函数输出`MPE`为每个尺度下的排列熵。
阅读全文