Как я могу векторизовать этот код? На данный момент он работает так медленно. Я действительно застрял и провел последние пару часов, пытаясь векторизовать его, однако я не могу заставить его работать правильно.
Моя наивная программа ниже работает невероятно медленно. N
должно быть действительно 10000, но программа борется с N = 100
. Любой совет будет принят во внимание.
Код хочет перебрать функции, данные N
раз для каждого значения w21
. Затем он строит последние 200 значений для каждого значения w21
. Приведенный ниже код работает, как и ожидалось, с точки зрения графика, но, как уже упоминалось, далеко не медленный, поскольку для хорошего графика значения должны быть в тысячах.
hold on
% Number of iterations
N = 100;
x = 1;
y = 1;
z = 1;
for w21 = linspace(-12,-3,N)
for i = 1:N-1
y = y_iterate(x,z,w21);
z = z_iterate(y);
x = x_iterate(y);
if i >= (N - 200)
p = plot(w21,x,'.k','MarkerSize',3);
end
end
end
Обязательные функции:
function val = x_iterate(y)
val = -3 + 8.*(1 ./ (1 + exp(-y)));
end
function val = z_iterate(y)
val = -7 + 8.*(1 ./ (1 + exp(-y)));
end
function val = y_iterate(x,z,w21)
val = 4 + w21.*(1 ./ (1 + exp(-x))) + 6.*(1 ./ (1 + exp(-z)));
end