Vectorization 如何向量化初始条件

Vectorization 如何向量化初始条件,vectorization,octave,Vectorization,Octave,我正在尝试对初始条件进行矢量化(x)和(y)以绘制不同初始条件下的多个奇怪吸引子,同时使每个初始条件具有单独的颜色图。但我不知道如何将初始条件矢量化,并使每个初始条件图都是单独的颜色 我的想法是让x和y成为一个向量x=[7.4,6.3,3.4,5.4,4.5]y=[6,3,8,3,14],每个x和y初始条件用不同的颜色创建它们自己的绘图(但这不起作用,因为它需要一个值而不是多个值)。请参见下面的x(k)和y(k)初始值图 以下工作代码未矢量化: x(1)=[7.4]; y(1)=[.6]; a

我正在尝试对初始条件进行矢量化
(x)
(y)
以绘制不同初始条件下的多个奇怪吸引子,同时使每个初始条件具有单独的颜色图。但我不知道如何将初始条件矢量化,并使每个初始条件图都是单独的颜色

我的想法是让xy成为一个向量x=[7.4,6.3,3.4,5.4,4.5]y=[6,3,8,3,14],每个x和y初始条件用不同的颜色创建它们自己的绘图(但这不起作用,因为它需要一个值而不是多个值)。请参见下面的x(k)和y(k)初始值图

以下工作代码未矢量化:

x(1)=[7.4];
y(1)=[.6];
a = -1.24458;
b = -1.25191;
c = -1.815908;
d = -1.90866;

maxiter = 10000;
z = linspace(1,maxiter+1,maxiter+1);
for k=1:maxiter

% Clifford Attractors

  x(k+1) = sin(a*y(k)) + c*cos(a*x(k));
  y(k+1) = sin(b*x(k)) + d*cos(b*y(k));
end

scatter(x,y,'.')

Ps:我正在使用64位UbuntuLinux Octave 4.2.2,它类似于Matlab

您可以使用矩阵而不是向量,并将每一行视为一个迭代。为了加快速度,我们可以在开始时分配矩阵。要绘制不同的运行图,我们只需对其进行迭代,并每次使用不同的颜色:

x0=[7.4,6.3,3.4,5.4,4.5];
y0=[.6,.3,.8,.3,.14];
a = -1.24458;
b = -1.25191;
c = -1.815908;
d = -1.90866;

maxiter = 1000;
z = linspace(1,maxiter+1,maxiter+1);
N = numel(x0);
x = [x0;NaN(maxiter, N)];
y = [x0;NaN(maxiter, N)];
for k=1:maxiter

% Clifford Attractors

  x(k+1,:) = sin(a*y(k,:)) + c*cos(a*x(k,:));
  y(k+1,:) = sin(b*x(k,:)) + d*cos(b*y(k,:));
end

colors = 'rgbymcwk';
hold on
for n=1:N
    scatter(x(:,n), y(:,n), ['.',colors(1+mod(n,numel(colors)))])
end

不能像这样对递归定义进行矢量化。Yoy可以预先分配x和y以加快计算速度<代码>y=零(1,最大值);x=零(1,最大值)…防止GNU倍频程在每个循环中重新分配和复制递增矩阵。