matlab symfun 与匿名函数

标签 matlab function inline difference anonymous

在 Matlab 中使用 symfun 和匿名函数有什么区别?哪一个更好,即更快?看起来,我可以同时使用符号数和实数。

Here他们讨论了内联函数和匿名函数之间的区别,但没有提到 symfun。

最佳答案

基本 MATLAB 功能专为数值计算而设计,即处理 float 。默认情况下,MATLAB 变量和函数是数字,这就是为什么在链接的讨论中仅比较内联函数和匿名函数。

但是,使用符号数学工具箱可以使用符号表达式和函数。这对于解决数学问题非常有用,例如精确微分、积分、使用任意精度算术或求解方程。然而,符号引擎被设计为智能,而不是快速(毕竟,符号引擎迟早必须执行函数的求值,但 MATLAB被设计是为了高效地处理数值问题)。只要有可能,人们应该更喜欢 MATLAB 数值函数,尤其是那些通常可以扩展为以矢量化方式工作的函数,沿着数组输入提供数组输出。

当面对混合问题时(需要符号数学,而且还需要对结果进行计算昂贵的评估),以参数(符号)方式解决初始问题一次可能是最实用的,然后通过将最后的结果转换为适当的数值函数来使用它。您应该看看 matlabFunction符号数学工具箱的函数,它恰好执行此操作,并且对于合理缩放的函数非常有效(但 here's 是一个反例)。

请注意,虽然您可以使用公式定义匿名函数,例如 f=@(x) 3*x^2-2,但这实际上会定义一个返回值的数字函数对于给定的数字输入,例如 f(3)。如果您手中有要计算的公式,请始终使用数值函数。符号数学应保留用于无法通过基本数值特征精确解决的情况,例如计算多元标量场的精确梯度。

关于matlab symfun 与匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587313/

相关文章:

matlab - isequal() 和 == 用于比较矩阵无法正常工作 matlab

php - 如何显示函数值?

function - 在 Scala 中,如何链接生成带有过滤器的元组的映射?

c++ - 在内联函数中使用静态数据成员

c++ - 静态 constexpr 变量是否在 C++ 中内联?

matlab - 如何理解Matlab内置函数 "kmeans"?

matlab - Matlab中如何绘制不同间距的网格线

c++ - 在主函数之上定义命名空间函数是否会导致内联函数?

MATLAB 自动裁剪

c++ - decltype(function_name) 的返回类型完全没用?