Напомню себе.
griddata(X, Y, Z, XI, YI, 'method') интерполирует поверхность Z(X, Y) в точках XI, YI для получения ZI. В 6.5 если 'method' не указан, то применяется линейная интерполяция. В других версиях не проверял. Банальный вариант функции
Код:
function B = gd(A)
[m, n] = size(A);
F = not(isnan(A));
[I, J] = find(F); Z = A(F);
In = [1:m]'; Jn = [1:n];
B = griddata(J, I, Z, Jn, In);
Если бы не было неопределённых значений поверхности в угловых точках, то
Код:
> A = [1 2 3 4; NaN 6 7 8; 9 NaN 11 12; 13 14 NaN 16], gd(A)
A =
1 2 3 4
NaN 6 7 8
9 NaN 11 12
13 14 NaN 16
ans =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Если же значение не определено в углу, то
Код:
>> A = [1 2 3 NaN; NaN 6 7 8; 9 NaN 11 12; 13 14 NaN 16], gd(A)
A =
1 2 3 NaN
NaN 6 7 8
9 NaN 11 12
13 14 NaN 16
ans =
1 2 3 NaN
5 6 7 8
9 10 11 12
13 14 15 16
Я бы нулями заменил.
Что заменить нулями? И чем пользоваться?
Третье редактирование: Заметив опечатку, заменил ZI на YI. (Вечер 03.03.2015)
И четвёртое - 'metod' заменил на 'method'