Как выполнить шахматную интерполяцию в Matlab? - PullRequest
4 голосов
/ 24 мая 2011

У меня есть две матрицы 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) циклы for в matlab медленные и 2), безусловно, есть способ использовать interp2, хотя это кажетсятребовать meshgrid -подобную сетку.Итак, можно ли сделать это проще / быстрее?

1 Ответ

7 голосов
/ 24 мая 2011

Благодаря 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);
...