2014-11-06 64 views
1

我有一个带有6个参数(如fn)的函数。我也有两个数组,一个'x'数组和一个'y'数组,其中填充了我想评估fn的值(其他4个参数在整个时间保持不变)。我想得到一个fn迭代在x,y上的3d图。无论如何不这样做,而不重新定义函数是2个参数的函数,其他4个参数保持不变?使用用户自定义函数的matplotlib绘制3d表面,使用> 2个参数

我已经看过matplotlib的meshgrid,它看起来像是一个方向,但我不确定在meshgrid上调用我的函数将工作,因为额外的四个(常量)参数。有任何想法吗?如果要求将发布详细的代码。

+0

最简单的解决方法就是让只接受两个参数并与其他参数的适当的固定值调用你的函数另一个函数。 – BrenBarn 2014-11-06 06:49:02

+0

你总是可以用'lamda'函数'x,y'输入,其他四个固定。 – 2014-11-06 06:51:42

回答

1

您正在寻找的东西叫做讨好(http://en.wikipedia.org/wiki/Currying

def wrapper_function_factory(fun, c, d, e f): 
    return lambda a, b: fun(a, b, c, d, e, f) 

fixed_fun = wrapper_function_factor(fun, C, D, E, F) 

Z = fixed_fun(x, y) # assuming your function can do broadcasting