三维样条插值Matlab

时间:2012-04-27 14:36:37

标签: matlab interpolation

我有两个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)

1 个答案:

答案 0 :(得分:0)

我不太了解您的数据,BA的函数(反之亦然)?此外,这些阵列似乎是1D,而不是3D。你能澄清一下吗?

在你的函数调用中

yy = spline(x, Y, xx)

Y是您要插入的因变量:Yx的函数,上述函数调用的结果是返回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。因此,我们还有两个,xy以及我们要执行查找的点的三个坐标,而不仅仅是一个独立的坐标z:{{1} },xxyy。要插值的函数必须是坐标zz的3D函数。试着举个例子:

(x, y, z)