如何从Chen的超混沌系统中生成混沌序列?

Abi*_*gan 1 matlab image-processing chaos

我需要根据chen的超混沌系统生成两个混沌序列.它必须从以下四个公式生成

X=ay-x;
Y=-xz+dx+cy-q;
Y=xy-bz;
Q=x+k;
Run Code Online (Sandbox Code Playgroud)

其中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 ;
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码,但我无法正确使用它.

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);
Run Code Online (Sandbox Code Playgroud)

请帮助.提前致谢.

Chr*_*lor 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
Run Code Online (Sandbox Code Playgroud)

将其保存在一个名为的文件中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 = ...
%
Run Code Online (Sandbox Code Playgroud)

下一行创建一个可由Matlab的集成例程使用的函数.第一个参数t是当前时间(实际上没有使用),第二个参数是4x1包含x,y,z,q 的向量.

>> fun = @(t,v) chen(t,v,a,b,c,d,k)
Run Code Online (Sandbox Code Playgroud)

现在您可以使用ode45(使用4阶runge-kutta方案进行数值积分)来集成它并绘制一些路径.第一个参数ode45是要集成的函数,第二个参数是要集成的时间跨度(我选择从0到100集成,也许你想做不同的事情),第三个参数是你的初始条件(希望你已经定义了).

>> [t, v] = ode45(fun, [0 100], v0);
Run Code Online (Sandbox Code Playgroud)

输出是t一个时间矢量v,它将是一个矩阵,其列是不同的分量(x,y,z,q),其行是每个时间点的分量值.因此,您可以为每个x和y分量拉出一列,并绘制它们

>> x = v(:,1);
>> y = v(:,2);
>> plot(x,y)
Run Code Online (Sandbox Code Playgroud)

这给出了一个看起来相当混乱的情节:

在此输入图像描述