问题描述
我有实验数据的 x 和 y 坐标,我正在尝试将椭圆拟合到其中。
我的 x 数据在列表 xpix
中,而我的 y 数据在列表 ypix
中。我已经使用椭圆 np.meshgrid
和 np.contour
拟合了旋转方程。
xpix = [.....]
ypix = [.....]
x = np.linspace(-80,80,100)
y = np.linspace(-80,100)
X,Y = np.meshgrid(x,y)
#equation of rotated ellipse below,uses X and Y
F = (X*np.cos(63*np.pi/180) -Y*np.sin(63*np.pi/180))**2 /352.8676 + (X*np.sin(63*np.pi/180) +
Y*np.cos(63*np.pi/180))**2 / 6300 - 1
plt.contour(X,Y,F,[0])
仅就上下文而言,以下显示了我的情节:
其中我很满意,因此我想找到我的轮廓数据和我的 xpix,ypix
数据之间的卡方值。我完全不知道如何做到这一点,因为轮廓数据具有完全不同的数组结构 - 它绘制了最适合椭圆的数组值,其中第四个参数为 plt.contour
= [0]
。我认为,为了手动执行此操作,我必须筛选所有 X,Y
值以找到用于构建此椭圆的值。有没有更快的方法可以直接做到这一点?例如,我知道要使用 stats.chisquare(ypix,y_model)
,ypix
和 y_model
需要具有相同的形状。
一旦我了解了如何做到这一点,我的目标是运行一个函数,该函数迭代地改变旋转角度、半短轴和长轴,直到卡方最大化。
谢谢!