Я не совсем понимаю ваши данные, является B
функцией A
(или наоборот)? Кроме того, эти массивы выглядят как 1D, а не 3D. Можете ли вы это прояснить?
В вашем вызове функции
yy = spline(x, Y, xx)
Y
является зависимой переменной, которую вы интерполирования: Y
является функцией x
и результат выше вызова функции является возврат значения Y
в xx
. В качестве примера в одном измерении, попробуйте
x = linspace(0., 2.*pi, 100);
Y = sin(x);
% What is the value of Y (or sin(x)) at pi/2?
xx = pi/2.;
yy = spline(x, Y, xx); % This should result in yy = 1.000
Отъезд spline
documentation для получения дополнительной информации и примеров использования этой функции.
Теперь эта функция предназначена только для 1D-фитинга и является (предположим) эквивалентом yy = interp1(x, Y, xx, 'spline')
. Если вы хотите сделать трехмерный поиск, вам нужно будет использовать interp3
, который обобщает приведенный выше пример на 3D. Таким образом, вместо одной независимой координаты x
у нас есть еще два, y
и z
и три координаты для точки, в которой мы хотим выполнить поиск: xx
, yy
и zz
. Функция, которую вы интерполируете, должна быть трехмерной функцией координат (x, y, z)
. Попробуйте, как пример:
x = linspace(-1., 1., 100); y = x; z = x;
[X, Y, Z] = meshgrid(x, y, z);
s = exp(-sqrt(X.^2 + Y.^2 + Z.^2));
sinterp = interp3(x, y, z, s, 0., 0., 0.) % Should give sinterp = 0.9827
Эти массивы выглядят очень ** ** два мерная мне ... –
Что эти массивы представляют? Примечание: в абсолютно НЕТ случае interp3 будет правильным инструментом для интерполяции здесь. –