SE(谱熵)算法和C0复杂度计算

SE(谱熵)算法和C0混沌序列的复杂度分析

1、SE算法

在研究混沌序列复杂度时,看到文献中使用SE复杂度算法计算混沌序列的复杂度,自己尝试根据参考文献编写了一段matlab代码。
代码如下:

function SE = SE_entroy(x) %x为一维数组序列
x = x - mean(x);
X = fft(x);%离散傅里叶变换
N = ceil((size(X,2)/2));
X = X(1:N);%取得变换后序列前半部分
Pk = (abs(X).*abs(X))./sum(abs(X).*abs(X));计算Pk-相对功率谱概率
j=1;
for i=1:N
    if Pk(i)~=0
        Pk1(j)=Pk(i);
        j = j+1;
    end
end%去除PK中为0的值,避免出现se无穷大
se = -sum(Pk1.*log(Pk1));
SE = se/log(N);谱熵归一化
end
算法验证

下图是SE熵随着logistic中u的参数变化曲线图
在这里插入图片描述
下图是SE熵随着FGdelay中u的参数变化曲线图
在这里插入图片描述
参考文献:
叶晓林, 牟俊, 王智森, et al. 基于SE和C_0算法的连续混沌系统复杂度分析[J]. 大连工业大学学报, v.37;No.159(1):71-76.

2、C0复杂度算法

找到一篇参考文献计算了C0复杂度,matlab代码如下:

function c = C_zero(r,x1)%文献中r一般取值建议5-10,x1为一维数组序列
N = size(x1,2);
X1 = fft(x1);离散傅里叶变换
gn = r*sum(abs(X1).*abs(X1),2)/N;计算判断条件
for i=1:N
    if abs(X1(i))^2> gn
        X2(i)=X1(i);
    else
        X2(i)=0;
    end
end
x2 =ifft(X2);反傅里叶变换
x3 = x1-x2;
c = sum(abs(x3).*abs(x3))/sum(abs(x1).*abs(x1));计算了C0复杂度
end
算法文献验证

logistic 映射

function x = logisitc_map(x,u,N)
for i=1:N
    x(i+1) = u*x(i)*(1-x(i));
end
end

画出C0复杂度随着参数u的变化的曲线图

clear all
r = 5;
for u=0.01:0.01:4
    i=round(u*100);
    X = logisitc_map(0.43,u,5000);
    c(i) = C_zero(r,X);
end
u=0.01:0.01:4;
plot(u,c)

logistic复杂性图
文献图片
下面这幅图对于FGdelay(自己改造的映射)求解,值在0.25左右波动,在这里插入图片描述

参考文献

孙克辉, 贺少波, 朱从旭, et al. 基于C_0算法的混沌系统复杂度特性分析[J]. 电子学报, 2013, 41(9):1765-1771.

  • 11
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DDD铩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值