我有两个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];
我希望在Matlab中使用Interp3
在它们之间进行样条线或3D插值。我应该如何在V
中定义VI = interp3(X,Y,Z,V,XI,YI,ZI)
?
Y
中的yy = spline(x,Y,xx)
。
答案 0 :(得分: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
:{{1} },xx
和yy
。要插值的函数必须是坐标zz
的3D函数。试着举个例子:
(x, y, z)