【问题标题】:3D Spline Interpolation Matlab3D 样条插值 Matlab
【发布时间】:2012-04-27 23:24:54
【问题描述】:

我有两个 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 插值。我应该如何在 VI = interp3(X,Y,Z,V,XI,YI,ZI) 中定义 V

Y 中的yy = spline(x,Y,xx)

【问题讨论】:

  • 这些数组在我看来非常二维...
  • 这些数组代表什么?注意:绝对没有任何情况下 interp3 是此处插值的正确工具。

标签: matlab interpolation


【解决方案1】:

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

在你的函数调用中

yy = spline(x, Y, xx)

Y 是您插入的因变量:Yx 的函数,上述函数调用的结果是在 xx 处返回 Y 的值。以一维为例,试试

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,我们还有两个,yz,以及我们要执行查找的点的三个坐标:xxyy 和 @987654339 @。您正在插值的函数必须是坐标 (x, y, z) 的 3D 函数。试一试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多