python - 检查值是否在预定义线性函数周围的特定区域内
问题描述
不幸的是,我对解决我的问题的研究没有成功,我希望你能帮助我。我为直线定义了以下线性函数
x = [298358.3258395831, 298401.1779180078]
y = [5625243.628060675, 5625347.074197255]
m, b = np.polyfit(x, y, 1)
我想检查一个数组中的值是否在这个函数周围的区域内。函数周围的区域可能如下所示:
我找不到如何围绕这个直线函数创建一个区域的解决方案,所以我找不到如何检查数组中的点是在区域内还是在区域外的方法。
提前致谢!
解决方案
对于由方程给出的线ax + by + c = 0
,从一点A = (x_a,y_a)
到这条线的距离由以下公式给出:
dist = np.abs(a * x_a + b * y_a + c) / np.sqrt(a**2 + b**2)
来源在这里。
这样,如果你有一个点数组和一个阈值,你认为你的点离你的线太远了,你可以简单地做:
array_points = ... # Format : [[x_1,y_1], [x_2,y_2],...]
a, b, c = ... # Your line's parameters here
thresh = 1e-2 # For example
def is_close_line(array, threshold) :
array_dist = np.abs(a * array[:,0] + b * array[:,1] + c) / np.sqrt(a**2 + b**2)
return (array_dist < threshold)
is_close_line(array_points, thresh)
然后将输出一个布尔数组,其中i
第 - 项表示i
第 - 元素array_points
是否靠近您的行。
推荐阅读
- markdown - 在 Sphinx 中对 Markdown 输出的 Autodoc 扩展支持
- sql - OracleSQL - 选择一列上具有 DISTINCT 的所有列
- javascript - 验证码图像解码base64
- android - 带上下文的无内存泄漏单例
- google-chrome - 禁用 Chrome 后如何在 Chrome 中启用网络安全?
- amazon-web-services - 在本地获取 sagemaker 容器
- javascript - Youtube 链接 src
- openapi - 引用组件属性的 OpenAPI 路径参数
- sql - Azure 可用备份显示“未找到数据库”
- python - 如何在 3D 图像上绘制坐标并显示它