声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1676|回复: 11

[分形与混沌] 请教关于混沌检测的六个问题

[复制链接]
发表于 2007-12-25 11:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我的工作:用混沌方法检测信号
参考资料:吉林大学李月老师的一系列文章
目前工作:计算duffing振子的Lyapunov指数
参考资料:陆博士的《关于小数据量法计算最大Lyapunov指数的讨论》
具体实现:
Part 1
按照李月老师的方法

Duffing振子为:
dy=[y(2);y(1)-y(1)^3-mu*y(2)+r*(cos(w*t))];

参数取:

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点附近,计算效果怎么样?

不好意思,没弄明白怎么发图,麻烦各位了!
谢谢!

图.doc

83.5 KB, 下载次数: 57

回复
分享到:

使用道具 举报

发表于 2007-12-25 15:04 | 显示全部楼层
图2和图4不像是Lyapunov指数图
 楼主| 发表于 2007-12-25 17:23 | 显示全部楼层
我也觉得和陆博士做出来的结果差别很大
可是就是不知道为什么?
把程序发上来,请大家帮我看看吧!
谢谢了!
 楼主| 发表于 2007-12-25 17:25 | 显示全部楼层
% duffing方程

function dy=duffing(t,y)

global mu
global r
global w

dy=[y(2);y(1)-y(1)^3-mu*y(2)+r*(cos(w*t))];
 楼主| 发表于 2007-12-25 17:26 | 显示全部楼层
% 求解duffing方程

clear all
clc

global mu
global r
global w

mu=0.5;     % 变量赋值
r=0.82;
w=1;
x0=[0;0];
tstart=0;
tend=100;
td=0.01;
tspan=[tstart:td:tend];

[t,y]=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',[y(:,1) y(:,2)]);
fclose(fid);

save('data.mat','y');
 楼主| 发表于 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)');
 楼主| 发表于 2007-12-25 17:29 | 显示全部楼层
我不知道是不是算法出了什么问题,:@(
麻烦大家帮我看看,:loveliness: 谢谢了!
发表于 2008-1-2 11:51 | 显示全部楼层

回复 #7 Jessie5663 的帖子

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

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

3 logm为矩阵函数,应采用log
发表于 2008-1-3 21:53 | 显示全部楼层
对于混沌,检测在理论上有时候差别都很大的,按照他们说的有时候都做不出来
 楼主| 发表于 2008-1-7 10:04 | 显示全部楼层
To yufeiqun2008

谢谢你的建议!

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

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

3.谢谢!
 楼主| 发表于 2008-1-7 10:07 | 显示全部楼层
To 无水1324

谢谢你!
我也检测得一头雾水啊!
我还想问一下,混沌在哪方面属于应用的比较成熟的?你们都在做什么呢?
谢谢!
发表于 2008-5-25 19:02 | 显示全部楼层

确实,我按照李月老师书上写的,基本上仿真出来的临界值都和她的不一样,找到的论文也是不一样的临界值。我现在都不知道到底利用混沌能不能实现微弱信号的检测了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-19 22:53 , Processed in 0.072553 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表