如何将 Matlab 中的 ppval 和 @() 翻译成 Python 等价物?

How translate ppval and @() in Matlab to Python equivalent?

我有以下代码:

from scipy.interpolate import UnivariateSpline
from scipy.optimize import fmin

a = UnivariateSpline(b,c) #Python

d = fmins(@(t) -ppval(a,t), someexpression); #Matlab where fmin is equivalent to fmins

如何翻译成Python3?

fmin的文档告诉我们,它的第一个参数必须是函数,第二个参数是初始值,所以和MATLAB完全一样。在那种情况下,你应该可以调用

d = fmin(lambda x: -a(x), someexpression)

@(t) -ppval(a,t)在Matlab中是一个匿名函数

您可以在 python 中使用 lambda function 类似地表示事物。

通过示例 here 我看到 UnivariateSpline 的输出 是可调用的,那么 python 类似的是 lambda t: -a(t).

但是你会有更多的问题 fmins 没有定义然后你可能想检查 scipy.optimize 包中的替代品。