Вопрос по matlab – 3D Сплайн Интерполяция Matlab

1

У меня есть два 3D-массива:

 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. Как мне определитьV вVI = interp3(X,Y,Z,V,XI,YI,ZI)?

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

Что представляют собой эти массивы? Примечание: в абсолютно НЕТ случае, interp3 будет правильным инструментом для интерполяции. user85109
Эти массивы выглядят оченьtwo мерный для меня ... Li-aung Yip

Ваш Ответ

1   ответ
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 для получения дополнительной информации и примеров использования этой функции.

Теперь эта функция предназначена только для одномерной подгонки и эквивалентна (я полагаю)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

Похожие вопросы