我正在将这个matlab函数句柄转换为python,并在python中收到此错误(ValueError:使用序列设置数组元素。)。如果出现明显的错误,我对python很新。
在matlab中:
P = [1 1; 6 1; 6 5]
fh = @(x) sqrt(sum((ones(3,1)*x - P).^2, 2))
[x,fval] = fminsearch(@(x) max(fh(x)),[0 0])
在python中:
P = np.matrix([[1, 1],[ 6, 1],[ 6, 5]])
fh = lambda x:np.sqrt(sum(np.power((np.ones((3,1))*x - P),2),axis = 0))
xopt = scipy.optimize.fmin(func=fh,x0 = np.matrix([0, 0]))
代码在matlab中工作,但在python中没有。谢谢。
答案 0 :(得分:0)
在您的matlab代码中,fminsearch
正在最小化max
的{{1}}。因此,在Python代码中,传递给fh(x)
的{{1}}也应该是func
的{{1}}:
fmin
产量
max