Python中的Matlab内联函数

2 投票
4 回答
2454 浏览
提问于 2025-04-18 06:30

在Matlab中,我们可以这样做:

x = -10:.1:10;
f = inline('normpdf(x,3,2) + normpdf(x,-5,1)','x');
t = plot(x,f(x))

在Python中,有没有类似于inline的功能呢?

4 个回答

0

这不是一回事,因为lambda做的事情不同。我只是想用'inline'来替换我变量F中的值在GRAD里,这段代码是用matlab写的:

F= 3*X**2+2*X*Y+4*(Y-2)**2  
GRAD= inline([diff(F,X), diff(F,Y)])
0

你可以使用 eval 这个函数,但要注意,它是一个很危险的函数(可以参考这个链接了解更多:http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html):

from numpy import *
x = np.arange(0, pi, 0.1)
f = eval('sin') # fill in any function
y = f(x)

或者假设你在函数中的变量总是叫做 x

from numpy import *
x = np.arange(0, pi, 0.1)
y = eval('sin(x)')
2

是的,在iPython笔记本(可能在Enthought Canopy中也可以),你可以使用一种叫“魔法函数”的方法来设置内联显示。

% pylab inline

你需要重启内核才能让这个设置生效(至少在2.0版本之前的iPython笔记本中是这样)。

5

我觉得在Python中,“Inline”的对应概念就是lambda。

 Matlab:
 f = inline('normpdf(x,3,2) + normpdf(x,-5,1)','x');

 python:
 f = lambda x : normpdf(x,3,2) + normpdf(x,-5,1)
 # Assuming that normpdf is defined and in scope ;-)

撰写回答