我想在astropy
庫中使用Ellipse2D
模型擬合一個橢圓。適合不起作用。建模參數與初始參數相同(可能除幅度參數外)。請參見下面的代碼:使用astropy擬合一個橢圓[Ellipse2d模型]
import numpy as np
from astropy.modeling import models, fitting
import matplotlib.pyplot as pl
# fake data
num = 100
x, y = np.meshgrid(np.linspace(-5., 5., num), np.linspace(-5, 5, num))
e0 = models.Ellipse2D(amplitude=1., x_0=0., y_0=0., a=2, b=1, theta=0.)
z0 = e0(x, y)
print 'DATA:\n', e0, '\n\n'
# initial model
ei = models.Ellipse2D(amplitude=1., x_0=0.0, y_0=0.0, a=2, b=2, theta=0.2)
fi = fitting.LevMarLSQFitter()
#fitted model?
e1 = fi(ei, x, y, z0)
z1 = e1(x, y)
print 'MODEL:\n', e1, '\n\n'
pl.imshow(z0, extent=[-5, 5, -5, 5], alpha=0.5)
pl.imshow(z1, extent=[-5, 5, -5, 5], alpha=0.2)
pl.show()
您已經嘗試了不同的鉗工?我想知道這是否真的能起作用,因爲Ellipse2D模型看起來是一個堅實的橢圓。 – Iguananaut
是的,我嘗試了所有這些。 SimplexLSQFitter(見下文)給出了某種更好的結果,但它還遠遠不能令人滿意。 –