我需要根据chen的超混沌系统生成两个混沌序列。它必须从以下四个公式中生成
X=ay-x;
Y=-xz+dx+cy-q;
Y=xy-bz;
Q=x+k;
其中a,b,c,d,x,y,z,q全部初始化如下。 我只需要X和Y.
X=[x1,x2,...x4n]
Y=[y1,y2,...y4n]
a=36 ;
b=3 ;
c=28 ;
d=16 ;
k=0.2 ;
x=0.3 ;
y=-0.4 ;
z=1.2 ;
q=1 ;
n=256 ;
我尝试了以下代码,但我无法正常使用。
clc
clear all
close all
w=imread('C:\Users\Desktop\a.png');
[m n]=size(w)
a=36;
b=3;
c=28;
d=16;
k=0.2;
x(1)=0.3;
y(1)=-0.4;
z(1)=1.2;
q(1)=1;
for i=1:1:4(n)
x(i+1)=(a*(y(i)-x(i)));
y(i+1)=-(x(i)*z(i))+(d*x(i))+(c*y(i))-q(i);
z(i+1)=(x(i)*y(i))-(b*z(i));
q(i+1)=x(i)+k;
end
disp(x);
disp(y);
请帮助。提前谢谢。
答案 0 :(得分:6)
您的代码甚至不能满足您的需求。幸运的是,我对这个问题非常感兴趣,而且我有一大堆业余时间,所以我想我会尝试逐步实施它,告诉你该怎么做。我留下了一些空白让你填补。
听起来你想要整合超混沌陈系统,它在网上有各种各样的定义,但你似乎专注于
所以让我们编写一个定义该系统的matlab函数
function vdot = chen(t, v, a, b, c, d, k)
% Here you unpack the input vector v -
x = v(1); y = v(2); z = v(3); q = v(4);
% Here you need to implement your equations as xdot, ydot etc.
% xdot = ...
% ydot = ...
% I'll leave that for you to do yourself.
% Then you pack them up into an output vector -
vdot = [xdot; ydot; zdot; qdot];
end
将其保存在名为chen.m
的文件中。现在你需要定义参数a,b,c,d和k的值,以及你的初始条件。
% You need to define the values of a, b, c, d, k here.
% a = ...
% b = ...
% You also need to define the vector v0, which is a 4x1 vector of your
% initial conditions
% v0 = ...
%
下一行创建一个可由Matlab的集成例程使用的函数。第一个参数t
是当前时间(您实际上并未使用),第二个参数是包含x,y,z,q的4x1
向量。
>> fun = @(t,v) chen(t,v,a,b,c,d,k)
现在你可以使用ode45
(使用4阶runge-kutta方案进行数值积分)来集成它并绘制一些路径。 ode45
的第一个参数是要集成的函数,第二个参数是要集成的时间跨度(我选择从0到100集成,也许你想做一些不同的事情)和第三个参数是你的初始条件(希望你已经定义了)。
>> [t, v] = ode45(fun, [0 100], v0);
输出是t
,一个时间向量,v
,它将是一个矩阵,其列是不同的组件(x,y,z,q),其行是值每个时间点的组件因此,您可以为每个x和y组件提取一列,并绘制它们
>> x = v(:,1);
>> y = v(:,2);
>> plot(x,y)
这给出了一个看起来相当混乱的情节: