|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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); |
|