请教关于混沌检测的六个问题
我的工作:用混沌方法检测信号参考资料:吉林大学李月老师的一系列文章
目前工作:计算duffing振子的Lyapunov指数
参考资料:陆博士的《关于小数据量法计算最大Lyapunov指数的讨论》
具体实现:
Part 1
按照李月老师的方法
Duffing振子为:
dy=;
参数取:
mu=0.5;
w=1;
当r=0.82时,是混沌的,相图如下图1所示;
当r=0.84时,是大周期的,相图如下图2所示;
Part 2
按照陆博士文章中的最小数据量方法,计算最大Lyapunov指数
当r=0.82时,即混沌状态时,最大Lyapunov指数图如下图3所示;
当r=0.82时,即大周期状态时,最大Lyapunov指数图如下图4所示;
遇到问题:
1.
图1所示,可以认定系统处于混沌状态吗?
2.
图2所示,可以认定系统处于大周期状态吗?
3.
图3所示,混沌状态的最大Lyapunov指数应该大于0,怎么样通过这个图得出最大Lyapunov指数?
4.
图4所示,大周期状态的最大Lyapunov指数应该小于等于0,这个图好像得不出这个结论。为什么图4看起来很像周期信号?
还有几个问题,我也不太明白:
5.
Lyapunov指数能精确的区别混沌和大周期两种情况吗?
6.
最小数据量算法在0点附近,计算效果怎么样?
不好意思,没弄明白怎么发图,麻烦各位了!
谢谢! 图2和图4不像是Lyapunov指数图 我也觉得和陆博士做出来的结果差别很大
可是就是不知道为什么?
把程序发上来,请大家帮我看看吧!
谢谢了! % duffing方程
function dy=duffing(t,y)
global mu
global r
global w
dy=; % 求解duffing方程
clear all
clc
global mu
global r
global w
mu=0.5; % 变量赋值
r=0.82;
w=1;
x0=;
tstart=0;
tend=100;
td=0.01;
tspan=;
=ode45('duffing',tspan,x0); % 求解方程
path=''; % 路径设置
path_data=strcat(path,'data.txt');
path_picture=strcat(path,'相图.bmp');
leg=strcat('r=',mat2str(r));
figure(1) % 绘振子时域图(1)
plot(t,y(:,1),'g');
grid on;
title('Duffing振子');
xlabel('t');
ylabel('x');
legend(leg);
figure(2) % 绘振子时域图(2)
plot(t,y(:,2),'r');
grid on;
title('Duffing振子');
xlabel('t');
ylabel('dx');
legend(leg);
figure(4)
plot(t,y(:,1),'g',t,y(:,2),'r');
grid on;
title('Duffing振子');
xlabel('t');
% text(tend,y((tend-tstart)/td,1),'\fontsize{10}{x}');
% text(tend,y((tend-tstart)/td,2),'\fontsize{10}{dx}');
legend(leg);
figure(3) % 绘振子相图并存储
plot(y(:,1),y(:,2),'b');
grid on;
title('Duffing振子相图');
xlabel('x');
ylabel('dx');
legend(leg);
print(gcf,'-dmeta',path_picture);
fid=fopen(path_data,'w'); % 存储数据
fprintf(fid,'%g%g\n',);
fclose(fid);
save('data.mat','y'); % 最小数据量法计算数据最大Lyapunov指数
clear all
clc
td=0.01
load('data.mat'); % 读入数据
len=max(size(y)); % len为数据长度
figure(1) % 绘相图
plot(y(:,1),y(:,2));
grid on;
title('相图');
xlabel('x');
ylabel('dx');
res=10; % res为降采样系数
y=resample(y,1,res); % 降采样
N=max(size(y)); % 数据长度
M=min(size(y)); % 数据维数
y_max=max(y); % 归一化
y_min=min(y);
for i=1:M
for j=1:M
y(i,j)=(y(i,j)-y_min)/(y_max-y_min);
end
end
figure(2) %绘经过将采样处理的相图
plot(y(:,1),y(:,2));
grid on;
title('经过将采样处理的相图');
xlabel('x');
ylabel('dx');
P=50; % P为时间序列平均周期
t_num=200; % 指数分离考察长度
d_min=1;
D=zeros(t_num,1);
q=zeros(t_num,1);
Y=zeros(t_num,1);
dY=zeros(t_num-1,1);
delt_t=1;
for j=1:N-t_num
for i=1:N-t_num
if(abs(i-j)<=P)
continue
end
d=0;
for k=1:M
d=d+(y(i,k)-y(j,k))^2;
end
d=sqrt(d);
if(d<d_min)
d_min=d;
d_min_loc=i;
end
end
for i=1:t_num
d=0;
for k=1:M
d=d+(y(j+i,k)-y(d_min_loc+i,k))^2;
end
if(d~=0)
q(i)=q(i)+1;
D(i)=D(i)+logm(sqrt(d));
end
end
end
delt_t=td;
for i=1:t_num
Y(i)=D(i)/(q(i)*delt_t);
end
for i=1:(t_num-1)
dY(i)=Y(i+1)-Y(i);
end
figure(3)
plot(Y,'-*');
grid on;
title('Y(i)~i关系曲线');
xlabel('i');
ylabel('Y(i)');
figure(4)
plot(dY,'-*');
grid on;
title('Y(i)-Y(i-1)~i关系曲线');
xlabel('i');
ylabel('Y(i)-Y(i-1)'); 我不知道是不是算法出了什么问题,:@(
麻烦大家帮我看看,:loveliness: 谢谢了!
回复 #7 Jessie5663 的帖子
1 有没有必要在处理前归一化,感觉应该不能这样做2 对原始数据没进行相空间重构,把数据的维数认为是嵌入维数,应该再找点书看看,感觉有点急于求成的样子 呵呵
3 logm为矩阵函数,应采用log 对于混沌,检测在理论上有时候差别都很大的,按照他们说的有时候都做不出来 To yufeiqun2008
谢谢你的建议!
1.我做归一化是为了方便找最临近点,确实没有什么必要性;
2.我认为,相空间重构的目的就是为了把标量序列转化成矢量序列,这个里边的duffing振子就是一个矢量序列了,所以我才没有进行相空间重构;
3.谢谢! To 无水1324
谢谢你!
我也检测得一头雾水啊!
我还想问一下,混沌在哪方面属于应用的比较成熟的?你们都在做什么呢?
谢谢! 原帖由 无水1324 于 2008-1-3 21:53 发表 http://www.chinavib.com/forum/images/common/back.gif
对于混沌,检测在理论上有时候差别都很大的,按照他们说的有时候都做不出来
确实,我按照李月老师书上写的,基本上仿真出来的临界值都和她的不一样,找到的论文也是不一样的临界值。我现在都不知道到底利用混沌能不能实现微弱信号的检测了
页:
[1]