【发布时间】:2023-02-08 01:11:10
【问题描述】:
我有一些看起来像这样的数据:
我使用from skimage.measure import EllipseModel 在一些数据周围画了一个椭圆
我能够通过为包提供 B0_M 数据和 5200 到 5350 之间的相应 q^2 来拟合椭圆,然后我能够从拟合中提取一些参数,自己绘制椭圆,如下所示:
X1Y1 = np.column_stack((X1,Y1))
ell = EllipseModel()
ell.estimate(X1Y1)
xc, yc, a, b, theta = ell.params
其中X1 是完整的 B_0 数据,X2 是完整的 q^2 数据集。它为椭圆参数返回以下值:
a = 0.399894
b = 37.826
xc = 5272
yc = 9.27
theta = 1.573
不幸的是,这种拟合并不完美,所以我缩放了一些参数,或添加了一些小数字等,主要是为了修补以获得图中所示的拟合。这是我绘制椭圆拟合的方法:
xc, yc, a, b, theta = ell.params
t = np.linspace(0, 2*np.pi, 100)
dt = 0.01*theta
ell_x = xc + 2*a*np.cos(theta+dt)*np.cos(t) - 1.8*b*np.sin(theta+dt)*np.sin(t)
ell_y = yc + 0.47*a*np.sin(theta+dt)*np.cos(t) + 0.47*b*np.cos(theta+dt)*np.sin(t)+0.26
plt.scatter(X,Y, marker = '.', alpha = 0.05, color = 'navy', s =0.2)
plt.scatter(xc, yc+0.26, color='red', s=10)
plt.plot(ell_x, ell_y, color = 'red')
plt.xlim(5150,5400)
plt.ylim(7,12)
plt.xlabel('B0_M')
plt.ylabel('$q^2$')
plt.title('jpsi')
现在我想从X1和Y1中删除椭圆内的所有点
我怎样才能做到这一点?我想使用一个简单的数学论证,比如基本上使用椭圆方程,但它更复杂,因为我有它的参数形式,而且它也不是最整洁的东西,因为我已经按我说的不同量缩放了不同的变量前。
有什么方法可以简单地说,“删除 X、Y 中的点,如果它们在坐标为 ell_x 和 ell_y 的椭圆内”?
非常感谢
【问题讨论】:
-
什么是
X1和Y1?
标签: python numpy if-statement scikit-image ellipse