Jessie5663 发表于 2007-12-25 11:27

请教关于混沌检测的六个问题

我的工作:用混沌方法检测信号
参考资料:吉林大学李月老师的一系列文章
目前工作:计算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点附近,计算效果怎么样?
不好意思,没弄明白怎么发图,麻烦各位了!
谢谢!

yzsldj 发表于 2007-12-25 15:04

图2和图4不像是Lyapunov指数图

Jessie5663 发表于 2007-12-25 17:23

我也觉得和陆博士做出来的结果差别很大
可是就是不知道为什么?
把程序发上来,请大家帮我看看吧!
谢谢了!

Jessie5663 发表于 2007-12-25 17:25

% duffing方程

function dy=duffing(t,y)

global mu
global r
global w

dy=;

Jessie5663 发表于 2007-12-25 17:26

% 求解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');

Jessie5663 发表于 2007-12-25 17:27

% 最小数据量法计算数据最大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)');

Jessie5663 发表于 2007-12-25 17:29

我不知道是不是算法出了什么问题,:@(
麻烦大家帮我看看,:loveliness: 谢谢了!

yufeiqun2008 发表于 2008-1-2 11:51

回复 #7 Jessie5663 的帖子

1 有没有必要在处理前归一化,感觉应该不能这样做

2 对原始数据没进行相空间重构,把数据的维数认为是嵌入维数,应该再找点书看看,感觉有点急于求成的样子 呵呵

3 logm为矩阵函数,应采用log

无水1324 发表于 2008-1-3 21:53

对于混沌,检测在理论上有时候差别都很大的,按照他们说的有时候都做不出来

Jessie5663 发表于 2008-1-7 10:04

To yufeiqun2008

谢谢你的建议!

1.我做归一化是为了方便找最临近点,确实没有什么必要性;

2.我认为,相空间重构的目的就是为了把标量序列转化成矢量序列,这个里边的duffing振子就是一个矢量序列了,所以我才没有进行相空间重构;

3.谢谢!

Jessie5663 发表于 2008-1-7 10:07

To 无水1324

谢谢你!
我也检测得一头雾水啊!
我还想问一下,混沌在哪方面属于应用的比较成熟的?你们都在做什么呢?
谢谢!

lilly_chen 发表于 2008-5-25 19:02

原帖由 无水1324 于 2008-1-3 21:53 发表 http://www.chinavib.com/forum/images/common/back.gif
对于混沌,检测在理论上有时候差别都很大的,按照他们说的有时候都做不出来
确实,我按照李月老师书上写的,基本上仿真出来的临界值都和她的不一样,找到的论文也是不一样的临界值。我现在都不知道到底利用混沌能不能实现微弱信号的检测了
页: [1]
查看完整版本: 请教关于混沌检测的六个问题