MATLAB:为什么符号替换这么慢?有哪些更快的替代方法?

odn*_*con 4 matlab

在我的机器上,以下代码:

for i=1:200
    1+2+5;
end;
Run Code Online (Sandbox Code Playgroud)

在0.000180秒内运行。

现在,此代码:

syms x y z
f(x,y,z) = x + y+z;

for i=1:200
    f(1,2,5);
end;
Run Code Online (Sandbox Code Playgroud)

慢得多(6.193909秒)。

对于我的代码,我需要编写3个变量的几个复杂函数的导数,然后在给定域中插入所有整数点。这将有助于很多人能够进行符号区分,然后再插入,但这似乎非常慢。

除了手动完成所有操作(手动编写完整的导数)之外,还有其他选择吗?

AVK*_*AVK 5

您可以matlabFunction用来加快计算速度:

syms x y z
f(x,y,z) = x + y+z;
h= matlabFunction(f);
for i=1:200
    h(1,2,5);
end;
Run Code Online (Sandbox Code Playgroud)