在 Matlab 中说我有一个这样的矩阵:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
我现在需要在每个元素周围找到 3x3 的子矩阵(因此每个元素又是 3x3 子矩阵的中心)。中间的时候找fx没问题
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
这是子矩阵:
2 3 4
2 3 4
2 3 4
但是当在矩阵的边界,即第一个 og 最后一行或最后一列的元素时,当然不可能找到 3x3 子矩阵。相反,我需要适合的子矩阵。在角落里我会得到
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
其中子矩阵是:
1 2
1 2
在边界的中间,我得到了 fx:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
这使:
4 5 6
4 5 6
或者作为另一个例子:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
这使:
6 7 8
6 7 8
我希望你明白我的意思。我缺少一些功能,可以让我找到从元素到边界的距离。
我可以将每个元素视为子矩阵的中心,如果我可以测试,如果从元素到边界的距离低于子矩阵的边界(即子矩阵尺寸将改变,变为 5x5 子矩阵),那么我可以在制作子矩阵时截断它的一部分。
如何以最有效的方式找到从元素到矩阵边界的距离?