evalin 执行的 mupad 表达式是一个string型表达式,它不能自动完成变量 z 的数值代入。如果你要使用 evalin 实现的话,会稍微复杂些
方法1:evalin
z=1.0+2.0i;
evalin(symengine,sprintf('erf(%f+i%f)’,[real(z),imag(z)]))
另外,matlab 还有一个与 evalin 类似的mupad接口函数:feval,它可以方便实现mupad表达式自变量z的代入
方法2: feval
z=1.0+2.0*i;
double(feval(symengine,‘erf’, z))
方法3: mfun
z=1.0+2.0*i;
mfun(‘erf’,z)