バックグラウンド
次のような行列があるとします。
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 つだけであり、グループ化されることはないと想定しています。[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]
3.5は[1 2 3 3.5 4 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 に置き換えるために 2D 補間を行います (コーナー 2、4、4、および 6 は無視します)。