- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我有一个由算法计算出的 20.000 点的高曲面。该算法有时会出错,会错误地计算小区域内的 1 个或多个点。
这个错误无法在算法中解决,需要事后检测。
错误如下图所示:
如您所见,有一点计算错误,不仅破坏了完整的均匀表面,而且破坏了地 block 的美学(这在项目中也很重要。)
有时会超过一个点,一般不会超过5或6个。误差总是在Z轴上,所以不需要检查X和Y
我一直在绞尽脑汁想找到一个有点“通用”的算法来检测这个点。我想可能会取表面的补丁并表示 Z,然后从方差中检测点...但我认为它不会一直有效。
有什么想法吗?
注意:我不希望有人为我编写代码,只是一个想法。
PD:avobe图片的相关代码:
[x,y] = meshgrid([-2:.07:2]);
Z = x.*exp(-x.^2-y.^2);
subplot(1,2,1)
surf(x,y,Z,gradient(Z))
subplot(1,2,2)
Z(35,35)=Z(35,35)+0.3;
surf(x,y,Z,gradient(Z))
最佳答案
标准技巧是使用拉普拉斯算子,寻找最大的异常值。 (这与 Mohsen 提出的答案没有什么不同,但实际上更容易一些。)你甚至可以用 conv2 来做,所以它会非常有效。
我可以提供几种方法来实现这个想法。一个简单的方法是使用我的 gridfit 工具,它可以在文件交换中找到。 (Gridfit 本质上使用拉普拉斯算子进行平滑操作。)用包含的所有点拟合曲面,然后寻找被拟合扰动最严重的单个点。排除它,然后重新运行拟合,再次寻找最大的异常值。 (使用 gridfit,您可以使用权重为点赋予零权重,这是一种排除一个点或点列表的简单方法。)当所需的最大扰动足够小时,您可以决定停止该过程。一件好事是 gridfit 还会为异常值赋予新值,填补所有漏洞。
第二种方法是直接使用拉普拉斯算子,更多的是一种过滤方法。在这里,您只需计算每个点的值,即左侧、右侧、上方和下方每个邻居的平均值。与其计算出的平均值最不一致的单个值将替换为新值。或者,您可以使用新值与旧值的加权平均值。再次迭代,直到该过程不会生成任何大于某个公差的东西。 (这是我从 Fortran IMSL 库中记忆起的旧异常值检测和校正方案的基础,但可能可以追溯到大约 30 年前。)
关于matlab - 检测均匀表面中的错误点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467893/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!