📄 henonfinal.m
字号:
function Henonfinal
m=1024
x(1)=1;
y(1)=1;
for i=1:m-1
x(i+1)=y(i)+1-1.4*x(i)*x(i);
y(i+1)=0.3*x(i);
end
w=[x;y]; % 取x,y所有元素作为新数组的元素
q=zeros(2,1); % 分配空间
% leth=length(x);
for k=1:2
a=w(k,:); % 取数组w中k行的所有元素
% num=zeros(m,0); %存放各个exhausting history中的comment的长度
% for i=1:m
% num(i)=0
% end;
meana=mean(a);
for n=1:m %以0为界量化为0,1序列y(n)
if(x(n)>meana|y(n)>meana)
a(n)=1;
else
a(n)=0;
end;
end;
leth=length(a)
% num=zeros(leth,1); %存放各个exhausting history中的comment的长度
t=2;
n=length(a); % n为矩阵a的长度
e=0; % e为步长,先清零
p=1; % p为指针
if a(2)==a(1)
e=e+1;
p=p+1;
num(1)=1; % 前两个数的比较,相同则是表示断点在1;
else
e=e+1;
p=p+2;
num(1)=2;
end; % 前两个数的比较,不同则是表示断点在2;
while p<n
ps=p; % ps为指针
el=0; % 一次小循环内每次比较两数组值后所得exhausting history长度;穷尽步长
emax=0; % 寻找一个exhausting history中所有el的最大值;最长步长的字数
pmax=0;
for i=1:ps-1
j=i;
while(a(j)==a(p)) % 作比较,逻辑比较
j=j+1;
p=p+1;
el=el+1;
if p==n % 逻辑比较
p=p-1;
break;
end;
end;
if p>=pmax
pmax=p;
end;
el=0;
p=ps;
end;
num(t)=pmax+1-ps;
t=t+1;
p=pmax+1;
e=e+1;
end;
if p==n
e=e+1;
num(t)=1
end;
s=0; % s为熵,并清零;
for i=1:t % k为断点的个数;
P(i)=num(i)/leth; % num为元素个数,leth为数组长度;
s=s-P(i)*log2(P(i)); % 熵的计算公式
end
q(k)=s;
end
disp('entropy x= y=');
disp(q);
% disp(e);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -