符号熵(附matlab代码)

符号熵
       固定时间间隔下对系统进行采样取值的方法来追踪系统动态,熵是计算系统中包含可用信息大小的方法,可以用来度量系统的不确定性,从而描述符号的复杂性。
       符号熵将数据转化为少量的符号模式,虽然失去了大量信息,但保留了动态系统的周期性,对称性等动力学性能,并且区分过程中采取下采样的方法,降低连续样本的独立性,使熵值增加。
符号熵的计算:
1.给定时间序列长度为N的X={x(1),x(2)…x(N)},将时间序列转换为X={x(1),x(2)…x(n)},且将其量化到0—q-1之间,q是量化等级,当q=2时,将时间量化为0或者1

r为量化阈值,为样本均值
2.将符号序列进行重构:

为词序列,L为词序列长度
编码后序列的模式共种,例如量化等级为2时,重构的词序列为时,序列模式共8种.分别为{000,001,010,011,100,101,110,111}.
3.自编码序列为

4.计算出每个模式在重构的符号序列中出现的概率,记为
其中i=1,2…m

代码部分

function [out]=sym_en_func(fn_1,q,m)
N=length(fn_1);
u=zeros(N-m+1,m);
fn=zeros(1,N);
fn_2=mapminmax(fn_1,-1,1);

for i=1:N
    if abs(fn_2(i))>0.15
        fn(i)=1;
    else
        fn(i)=0;
    end
end

prob=zeros(1,q^m);
for i=1:N-m+1
    u(i,:)=fn(i:i+m-1);
end

[~,~,nn]=unique(u,'rows');
cc=tabulate(nn);
num=cc(:,2);

sum=0;
for i=1:length(num)
    prob(i)=num(i)/(N-m+1);
    sum=sum+prob(i)*log(1/(prob(i))); 
end

out=sum;
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值