如果我有一首Ode并以两种方式写出它,就像这样:
几乎没有时间上的区别。两者所需的时间是一样的。但我认为
function re=rabdab()
x=linspace(0,2000,2000)';
tic;
[T,Y] = ode45(@fun,[x],[0 1 1]);
[T,Y] = ode45(@fun,[x],[0 1 1]);
[T,Y] = ode45(@fun,[x],[0 1 1]);
toc;
tic;
[A,B] = ode45(@fun2,[x],[0 1 1]);
[A,B] = ode45(@fun2,[x],[0 1 1]);
[A,B] = ode45(@fun2,[x],[0 1 1]);
toc;
function dy = fun(t,y)
dy = zeros(3,1); % a column vector
dy = [y(2) * y(3);...
-y(1) * y(3);...
-0.51 * y(1) * y(2);];
function dy = fun2(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
几乎没有时间上的区别。两者所需的时间是一样的。但我认为
fun
是fun2
的向量化版本。或者我在这里错了吗?目的是稍微加速我的代码。这个例子来自Matlab网页。我想我还没有真正理解"向量化"是什么意思。如果这已经被向量化了,那么一段未被向量化的代码会是什么样子呢?