一、实验题目:matlab 实现关联维算法
二、实验内容:关联维算法
三、实验要求:
(1)取 m=4、8、10、20、25,
(2)取=3,应用时间序列重构一个 m 维相空间,
(3)取 r=1:1:5,即:从 1 变化到 5,步长为 1,
(4)计算 C2,
mrC
,(
)
*1
N
2
N
(
1
,
ji
r
X
i X
j
( j
i )
(5) 重复步骤 2)到 4),
(6)当 m 增大到 25 时计算时,在
ln 2
mrC
,(
)
图里表现为曲线的直线部分的斜率
ln
r
不再随 m 的变化而变化,此时 D2 即是所求的吸引子的关联维。
四、实验过程:
M=dlmread('C:\Users\xiaoyu\Desktop\my.txt');
data=M(1:2000,2);
[k,i]=min(data);
data=data-k;
m=4;t=3;
N=2000-(m-1)*t;
D=zeros(m,N);
for j=1:N
for i=1:m
D(i,j)=data((i-1)*t+j);
end
end
for r=1:5
sum=0;
for i=1:N-1
for j=i+1:N
d=norm((D(:,i)-D(:,j)),inf);
if r>d
theta=1;
else
theta=0;
end
sum=sum+theta;
end
end
C1(r)=2*sum/(N*N);
end
x=log(1:5)
y=log(C1)
figure
plot(x,y,'-*')
hold on
m=8;t=3;
N=2000-(m-1)*t;
D=zeros(m,N);
for j=1:N
for i=1:m
end
end
D(i,j)=data((i-1)*t+j);
for r=1:5
sum=0;
for i=1:N-1
for j=i+1:N
d=norm((D(:,i)-D(:,j)),inf);
if r>d
theta=1;
else
theta=0;
end
sum=sum+theta;
end
end
C2(r)=2*sum/(N*N);
end
x=log(1:5);
y=log(C2);
plot(x,y)
hold on
m=10;t=3;
N=2000-(m-1)*t;
D=zeros(m,N);
for j=1:N
for i=1:m
2
D(i,j)=data((i-1)*t+j);
end
end
for r=1:5
sum=0;
for i=1:N-1
for j=i+1:N
d=norm((D(:,i)-D(:,j)),inf);
if r>d
theta=1;
else
theta=0;
end
sum=sum+theta;
end
end
C3(r)=2*sum/(N*N);
end
x=log(1:5);
y=log(C3);
plot(x,y)
hold on
m=20;t=3;
N=2000-(m-1)*t;
D=zeros(m,N);
for j=1:N
for i=1:m
end
end
D(i,j)=data((i-1)*t+j);
for r=1:5
sum=0;
for i=1:N-1
for j=i+1:N
d=norm((D(:,i)-D(:,j)),inf);
if r>d
theta=1;
else
theta=0;
end
sum=sum+theta;
3
end
end
C4(r)=2*sum/(N*N);
end
x=log(1:5);
y=log(C4);
plot(x,y)
hold on
m=25;t=3;
N=2000-(m-1)*t;
D=zeros(m,N);
for j=1:N
for i=1:m
end
end
D(i,j)=data((i-1)*t+j);
for r=1:5
sum=0;
for i=1:N-1
for j=i+1:N
d=norm((D(:,i)-D(:,j)),inf);
if r>d
theta=1;
else
theta=0;
end
sum=sum+theta;
end
end
C5(r)=2*sum/(N*N);
end
x=log(1:5);
y=log(C5);
plot(x,y)
D2=(y(2)-y(1))/(x(2)-x(1))
4
结果:
D2 =0.0330
0
-0.005
-0.01
-0.015
-0.02
-0.025
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
5