如何在Matlab中进行棋盘格插值?

4
我有两个矩阵A和B,它们包含了一个像棋盘/国际象棋一样的网格形式的值。
AxAxAxAx...
xBxBxBxB...
AxAxAxAx...
xBxBxBxB...
...........
...........

其中x代表尚未知晓的值,我想要(线性)插值。最简单的方法是什么?

首先可能需要做的事情是

C = zeros(size(A)+size(B));
C(1:2:end,1:2:end) = A;
C(2:2:end,2:2:end) = B;

获取上述矩阵。现在,我可以循环遍历所有剩余的点,并取所有直接邻居的平均值,因为 1) 在 Matlab 中使用 for 循环速度较慢,2) 肯定有一种方法可以使用 interp2,但似乎需要一个类似于 meshgrid 的网格。所以,是否可以更轻松/更快地完成这个任务?
1个回答

7

感谢woodchips这里的回答,我找到了他的inpaint_nans,解决方案确实很简单:

C = nan(size(A)+size(B));
C(1:2:end, 1:2:end) = A;
C(2:2:end, 2:2:end) = B;
C = inpaint_nans(C);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接