背景
给定这样的矩阵:
X = [1 2 3 4 5;
2 3 4 5 6;
3 4 5 6 7;
4 5 6 7 8]
我们可以看到每个数字都在向右和向下增加。然而,方向并不重要,只要方向/坡度是一致的。
这可以通过以下方式进行测试:
> gradient(X) >= 0;
ans = [1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1]
和
> gradient(X') >= 0 % transpose of X
ans = [1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1]
在此示例中,我假设数据向右/向下增加,扩展到任何统一方向都不是一项复杂的任务。
这可以结合到完整的测试中:
> all(all(gradient(X) > 0)) && all(all(gradient(X') > 0))
ans = 1
问题:
如何检测与这个统一方向的任何偏差并“修复”它。修复应该涉及从周围的点插入一个值。
笔记:
在实践中,这些矩阵非常大,包含的值可能只有很小的差异。我现在假设一次只会有一个偏差,它们不会被组合在一起:[1 2 3 2 4 5] (2 is an error)
例如,而不是[1 2 3 2 1 4] ([2 1] is an error)
编辑:
[1 2 3 2 4 5]
应该变成[1 2 3 3.5 4 5]
其中 3.5 是周围点的插值(在本例中是 3 和 4 的平均值)。
编辑2:
忽略插值部分,我稍后会解决。
给定
X =
1 2 3 4 5
2 3 2 5 6
3 4 5 6 7
4 5 6 7 8
2显然是“错误”。我想要以下输出:
2 3 4
3 2 5
4 5 6
哪个是误差值和周围的点。从这些点出发,我将使用 3、3、5 和 5(忽略角点 2、4、4 和 6)进行 2D 插值以(希望)用 4 替换 2。