24小时热门版块排行榜    

CyRhmU.jpeg
查看: 854  |  回复: 1

xiaochao2138

新虫 (初入文坛)

[交流] 请问有没有虫友在搞多尺度熵(MSE),有没有相关的matlab程序?

我最近在做多尺度熵,网上找到一段程序,不知道可不可用,贴一下,请各位指教:
(如果有人有不同的多尺度熵matlab程序,能不能也贴一下谢了)
%%  求解多尺度熵 Multiscale  Entropy
clc
clear  all
load X11b.mat s
x=s(1:128,1);
k=0;
t=2;% 尺度因子,可以取1~20
N=floor(length(x)/t);
p= 0.20;   % p  可以选择  在 0.1~0.25
r=p*std(x)
for i=1:N
    for j=1+(i-1)*t:i*t
        k=k+x(j);
    end
    y(i)=k/t;
    k=0;
end

%%  求解m=2
m=2;
ph2=0;
num=zeros(N-m+1);
c=zeros(N-m+1);
for  i=1:N-m+1
    for  j=1:N-m+1
        if  j~=i
        d(i,j)=max([abs(y(i+0)-y(j+0)) abs(y(i+1)-y(j+1))]);
        end            
    end
end
for  i=1:N-m+1
    for  j=1:N-m+1
    if d(i,j)<r
        num(i)=num(i)+1;
    end
    end
    c(i)=num(i)/(N-m);
    ph2=ph2+c(i)
end
ph2=ph2/(N-m+1);

%%  求解m=3
m=3;
ph3=0;
num=zeros(N-m+1);
c=zeros(N-m+1);
for  i=1:N-m+1
    for  j=1:N-m+1
        if  j~=i
        d(i,j)=max([abs(y(i+0)-y(j+0)) abs(y(i+1)-y(j+1)) abs(y(i+2)-y(j+2))]);
        end            
    end
end
for  i=1:N-m+1
    for  j=1:N-m+1
    if d(i,j)<r
        num(i)=num(i)+1;
    end
    end
    c(i)=num(i)/(N-m);
    ph3=ph3+c(i);
end
ph3=ph3/(N-m+1);
%%  求得多尺度熵
MSEn=log(ph2/ph3)

%% %% %% %%
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
2楼2016-02-04 15:13:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiaochao2138 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见