声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1410|回复: 2

[分形与混沌] 混沌时间序列怎么生成

[复制链接]
发表于 2009-6-7 15:49 | 显示全部楼层 |阅读模式

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

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

x
最近在做C-C算法,参考文献是H.S. Kim的Nolinear dynamics,delay times, and embedding windows
里面讲到Lorenz方程来生成时间序列,方程为: dx/dt=-a(x-y); dy/dt=-xz+cx-y; dz/dt=xy-bz;
其中参数a=16,b=4.0,c=45.92,采样周期为0.01,取x变量的一维时间序列。我采用的是ODE45,里面的
odeset设为1e-3,舍去前面部分值,再每隔10个取一个点,但好像得到的数据用来做C-C中的data不行哟。下面是程序,产生100个点。麻烦高手指教一下,怎么实现可以得到文章所要的数据。请不要说用龙格库塔法(个人觉得ODE45本来就是用这方法来实现的)。

function dxdt=Lorenz(t,x)
a=16;b=4;c=45.92;
%**********************************************
dxdt=zeros(3,1);
dxdt(1)=a*(x(2)-x(1));
dxdt(2)=c*x(1)-x(1)*x(3)-x(2);
dxdt(3)=-b*x(3)+x(1)*x(2);

% function data_sample
options = odeset('RelTol',1e-3,'AbsTol',[1e-3 1e-3 1e-3]);
t0=[0 400];
x0=[0.1 0.2 0.3];
[t,x]=ode45('Lorenz',t0,x0,options);
%*****************************************************
n=length(t);
n1=round(1*n/10);
%*****************************************************
figure(1);
plot(t(n1:n),x(n1:n,1));
figure(2);
data=x(n1:100:n,1);
plot(t(n1:100:n),data);
data_sample=data(1:100);
回复
分享到:

使用道具 举报

发表于 2009-6-7 22:30 | 显示全部楼层

回复 楼主 liuminghua2000 的帖子

其它参数不变,用如下程序得到3000个数据
t0=0;
tf=1000;
[t,x]=ode45(@Lorenz,[t0:0.01:tf],[-1,0,1]);
Lorenz_data=x(53001:56000,1);
 楼主| 发表于 2009-6-8 08:31 | 显示全部楼层
谢谢,解决了。
再次感谢yuling和振动论坛
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-11 04:04 , Processed in 0.060987 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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