x,y,z为需要拟合或插值的数据。x0,y0,是我们想要求的插值数据Z0对应的坐标。
对散点数据用scatteredInterpolant可以进行拟合,
命令:F=scatteredInterpolant(x, y, z, 'linear');Z0=F(x0,y0);
使用scatteredInterpolant命令,要求X,Y,Z均为列向量,且数据个数一样。比如X有N行,那么Y和Z也要有N行。
% 假设我们有一些非均匀的二维数据点
x = [1, 2, 3, 4, 5, 1, 3, 5, 2, 4]; % x坐标
y = [1, 1, 1, 1, 1, 2, 2, 2, 3, 3]; % y坐标
z = rand(1, 10); % 对应的z值,这里随机生成
% 使用scatteredInterpolant进行样条插值
F = scatteredInterpolant(x, y, z, 'linear'); % 'linear' 可以替换为 'nearest', 'cubic' 等
% 创建一个网格以评估插值结果
[Xq, Yq] = meshgrid(linspace(min(x), max(x), 100), linspace(min(y), max(y), 100));
Zq = F(Xq, Yq); % 在网格点上计算插值
% 绘制原始数据点和插值结果
figure;
scatter3(x, y, z, 'filled'); % 绘制原始数据点
hold on;
surf(Xq, Yq, Zq, 'EdgeColor', 'none'); % 绘制插值曲面
xlabel('X');
ylabel('Y');
zlabel('Z');
title('二维非均匀样条拟合');
view(3); % 以3D视角查看