一、核心原理
多尺度散布熵(Multiscale Dispersion Entropy, MDE)通过多尺度粗粒化和散布熵(DE) 分析时间序列复杂度,步骤如下:
多尺度粗粒化:对原始信号用不同尺度因子s(窗口大小)进行滑动平均,得到降采样序列;
单尺度散布熵(DE):对粗粒化序列,通过嵌入映射、模式量化、概率统计计算熵值,量化信号随机性。
二、MATLAB核心代码实现
1. 单尺度散布熵(DE)计算
function de = dispersionEntropy(x, m, c, tau)
% 输入:x(序列), m(嵌入维度), c(类别数), tau(延迟时间,默认1)
% 输出:de(散布熵值)
x = x(:)'; N = length(x);
if N < m*tau, error('序列过短!'); end
% 1. 嵌入映射(m维向量)
Y = zeros(N - (m-1)*tau, m);
for i = 1:m
Y(:,i) = x(1 + (i-1)*tau : N - (m-i)*tau);
end
% 2. 散布模式量化(映射到1~c类)
ymin = min(x); ymax = max(x);
if ymax == ymin, de = 0; return; end % 常数序列熵为0
Z = ceil(c*(Y - ymin)/(ymax - ymin)); % 量化到[1,c]
Z(Z>c) = c; Z(Z<1) = 1; % 边界修正
% 3. 统计模式概率(字符串编码模式)
patterns = cell(1, size(Z,1));
for i = 1:size(Z,1)
patterns{
i} = sprintf('%d', Z(i,:)); % 如[1,3,2]→"132"(紧凑编码)
end
[unique_pats, ~, ic] = unique(patterns);
prob = histcounts(ic, 1:length(unique_pats)+1)/length(patterns); % 概率分布
% 4. 计算熵值(避免log(0))
de = -sum(prob .* log(prob + eps)); % eps防数值溢出
end
2. 多尺度粗粒化
function y = coarseGrain(x, s)
% 输入:x(原始序列), s(尺度因子)
% 输出:y(粗粒化序列,窗口平均)
x = x(:)'; N = length(x);
y = zeros(1, floor(N/s)); % 粗粒化后长度
for k = 1:floor(N/s)
y(k) = mean(x((k-1)*s + 1 : k*s)); % 窗口[s(k-1)+1, sk]平均
end
end
3. 多尺度散布熵(MDE)主函数
function mde = multiscaleDE(x, s_max, m, c, tau)
% 输入:x(原始序列), s_max(最大尺度), m(嵌入维度), c(类别数), tau(延迟时间)
% 输出:mde(1×s_max向量,mde(s)为尺度s的DE值)
mde = zeros(1, s_max);
for s = 1:s_max
xs = s==1 ? x : coarseGrain(x, s); % s=1为原始序列,否则粗粒化
mde(s) = dispersionEntropy(xs, m, c, tau);
end
end
三、应用示例:合成信号分析
1. 生成测试信号(低频趋势+正弦波+噪声)
fs = 1000; t = 0:1/fs:10; N = length(t); % 10秒,1000Hz采样
x = 0.5*t + 2*sin(2*pi*2*t) + 0.8*randn(1,N); % 趋势+2Hz正弦+噪声
2. 计算MDE并可视化
% 参数设置
s_max = 10; % 最大尺度(1~10)
m = 2; % 嵌入维度(模式长度)
c = 5; % 散布类别数(1~5)
tau = 1; % 延迟时间
% 计算MDE
mde = multiscaleDE(x, s_max, m, c, tau);
% 可视化
figure;
subplot(2,1,1); plot(t, x);
xlabel('时间(s)'); ylabel('幅值'); title('原始信号(趋势+正弦+噪声)');
subplot(2,1,2); plot(1:s_max, mde, 'ro-', 'LineWidth', 1.5);
xlabel('尺度s'); ylabel('MDE值'); title('多尺度散布熵曲线');
grid on;
参考代码 matlab多尺度散布熵 www.youwenfan.com/contentalh/51172.html
四、结果解读
小尺度(s=1~2):噪声主导,模式复杂→MDE值高;
中尺度(s=3~6):正弦波周期性凸显→MDE值下降;
大尺度(s>6):趋势主导,模式简单→MDE值稳定(低)。
五、参数选择建议
| 参数 | 推荐取值 | 说明 |
|---|---|---|
| 嵌入维度m | 2~5 | m过大增加计算量,过小丢失信息 |
| 类别数c | 3,5,7(奇数) | 类别过多抗噪差,过少分辨率低 |
| 尺度s_max | floor(N/10)(N为序列长) | 避免粗粒化后序列过短(至少含m个点) |
| 延迟τ | 1(默认) | 非均匀采样时可调整(如τ=2) |
六、工程应用注意事项
抗噪处理:信号含强噪声时,先小波去噪或中值滤波;
常数序列:若序列为常数(ymax=ymin),DE=0(无需计算);
实时性:序列较长时,用
histcounts替代unique+strcmp加速统计。