Math 插值曲线到曲面

Math 插值曲线到曲面,math,matlab,interpolation,Math,Matlab,Interpolation,这是一个插值问题: 我有一个函数z=z(x,y),我知道x和y之间的关系,就像x=f(y,x_0)。这里x_0是时间y=0时曲线的起点。假设x_0=[0 1 2]有三个值。对于x_0的每个值,我在R^2中得到一条曲线。x1=f1(y),x2=f2(y)和x3=f3(y),我使用(x1,f1),(x2,f2)和(x3,f3)在R^3中绘制z1,z2,z3曲线。如何插值z1,z2,23以获得曲面? 我会感谢你的帮助, mgm使用您的符号,以及x=f(x0,y)和z=f(x,y)的一些任意示例关系,您

这是一个插值问题: 我有一个函数z=z(x,y),我知道x和y之间的关系,就像x=f(y,x_0)。这里x_0是时间y=0时曲线的起点。假设x_0=[0 1 2]有三个值。对于x_0的每个值,我在R^2中得到一条曲线。x1=f1(y),x2=f2(y)和x3=f3(y),我使用(x1,f1),(x2,f2)和(x3,f3)在R^3中绘制z1,z2,z3曲线。如何插值z1,z2,23以获得曲面? 我会感谢你的帮助,
mgm

使用您的符号,以及x=f(x0,y)和z=f(x,y)的一些任意示例关系,您就是这样做的(我还添加了一个直接计算图以供参考):


一些示例代码(即通过创建z1、z2、z3)会有所帮助。非常感谢您的详细回答,但我不想使用interp2,因为我需要插值曲面作为函数。Matlab将interp2保存为矩阵。我需要积分这个曲面函数。你知道interp2使用哪种算法吗?@user1018331这篇博文是一个很好的起点:。顺便说一句,还要注意,如果你真的有一个符号函数,你可以直接积分(也可以参见相同的链接)
interp2
可以使用几种不同的算法……从上图可以看出,默认情况下它使用线性插值。祝你好运
% Define grid
x0_orig = 0:2;
y_orig  = 0:3;
[x0, y] = meshgrid(x0_orig, y_orig);

% Calculate x (replace the relationship with your own)
x = x0 + 0.1 * y.^2;

% Calculate z (replace the relationship with your own)
z = 0.1 * (x.^2 + y.^2);

% Plot
subplot(1,3,1)
surf(x, y, z)
xlabel('x')
ylabel('y')
zlabel('z')
title('Original data')

%%%%%%%%%%
% Interpolate with finer grid
x0i = 0:0.25:2;
yi  = 0:0.25:3;

xi = interp2(x0_orig, y_orig, x, x0i, yi');
[x0i yi] = meshgrid(x0i, yi);
zi = interp2(x0, y, z, x0i, yi);

subplot(1,3,2)
surf(xi, yi, zi);
title('Interpolated data')

%%%%%%%%%%
% Recalculate directly with finer grid
x0i = 0:0.25:2;
yi  = 0:0.25:3;

[x0i yi] = meshgrid(x0i, yi);
xi = x0i + 0.1 * yi.^2;
zi = 0.1 * (xi.^2 + yi.^2);

subplot(1,3,3)
surf(xi, yi, zi)
title('Recalculated directly')