2012-04-27 5 views
1

У меня есть два массива: 3D3D Spline Интерполяция Matlab

A=[ 
12751 4616 15915 
15864 4622 15667 
12877 4683 21050 
15816 4668 21253 
11374 5006 18495 
16995 5466 18493 
11638 4880 20023 
17078 4938 20006 
11576 4886 17011 
]; 

и

B=[ 
12402 2138 15743 
10285 3175 15851 
10237 3084 21052 
12130 2129 21299 
8074 3802 18505 
14515 1623 18497 
8415 3713 19856 
14462 1120 20061 
8340 3711 17145 
14483 1157 16990]; 

, и я хочу сделать сплайн или 3D интерполяции между ними с помощью Interp3 в Matlab.How я должен определить V в VI = interp3(X,Y,Z,V,XI,YI,ZI)?

или Y в yy = spline(x,Y,xx).

+2

Эти массивы выглядят очень ** ** два мерная мне ... –

+0

Что эти массивы представляют? Примечание: в абсолютно НЕТ случае interp3 будет правильным инструментом для интерполяции здесь. –

ответ

0

Я не совсем понимаю ваши данные, является 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 
Смежные вопросы