在给定边界的椭圆区域上离散化
Discretizing over the area of an ellipse given bounds
问题是我有一个中心 (x,y)
和一些标准偏差 sigma_{x1}
和 sigma_{x2}
,我可以一起使用它们来绘制中心的高斯 3-sigma 置信区间(x,y)
我需要对这个椭圆体进行离散化,以便我可以将函数的预期值评估为 f(x,y)*p(x,y)
,但我不确定如何生成 x
和 y
”网”。我不确定这里的术语是否正确。
如果这是一个正方形,答案将是 np.linspace(start=min, stop=max)
应用 x
和 y
的任意 min/max 值。我不完全确定如何处理非矩形形状?我最初的想法是在周围生成一个矩形区域,然后 select 点解决 ellipse equation returns something <=1 但我认为这不是最有效的实现方式这个。
注意:目前使用 python 3.6.9 和 numpy 1.19.4
我不认为你可以比你已经提出的方法更有效地做到这一点。要制作网格,您可以使用
x, y = np.mgrid[minx:maxx:step*1j, miny:maxy:step*1j]
这里mgrid
基本上是np.linspace
的多维版本。
那么您只需要丢弃椭圆外部的值并保留内部的值即可。使用逻辑索引“屏蔽”最简单:
mask = x**2 + y**2 < 1 # replace unit circle equation with ellipse equation
x, y = x[mask], y[mask]
然后您可以使用
评估您的期望值
ev = (f(x,y) * p(x, y)).sum()
(假设 f
和 p
都可以处理向量作为输入)。
问题是我有一个中心 (x,y)
和一些标准偏差 sigma_{x1}
和 sigma_{x2}
,我可以一起使用它们来绘制中心的高斯 3-sigma 置信区间(x,y)
我需要对这个椭圆体进行离散化,以便我可以将函数的预期值评估为 f(x,y)*p(x,y)
,但我不确定如何生成 x
和 y
”网”。我不确定这里的术语是否正确。
如果这是一个正方形,答案将是 np.linspace(start=min, stop=max)
应用 x
和 y
的任意 min/max 值。我不完全确定如何处理非矩形形状?我最初的想法是在周围生成一个矩形区域,然后 select 点解决 ellipse equation returns something <=1 但我认为这不是最有效的实现方式这个。
注意:目前使用 python 3.6.9 和 numpy 1.19.4
我不认为你可以比你已经提出的方法更有效地做到这一点。要制作网格,您可以使用
x, y = np.mgrid[minx:maxx:step*1j, miny:maxy:step*1j]
这里mgrid
基本上是np.linspace
的多维版本。
那么您只需要丢弃椭圆外部的值并保留内部的值即可。使用逻辑索引“屏蔽”最简单:
mask = x**2 + y**2 < 1 # replace unit circle equation with ellipse equation
x, y = x[mask], y[mask]
然后您可以使用
评估您的期望值ev = (f(x,y) * p(x, y)).sum()
(假设 f
和 p
都可以处理向量作为输入)。