方法一:使用Matlab内部函数griddata进行插值
% 读取离散点坐标( x,y,z )数据文件,生成空间曲面
% 数据文件格式为:每行分别为 x 、 y 和 z 坐标,各数值之间以空格作为分隔符
clc; clear;
load Points.txt; % 读取数据文件
x=Points(:,1);
y=Points(:,2);
z=Points(:,3);
% 下面三行为测试数据,分别是 9 个离散点的 xyz 坐标
x=[ 1 2 3 1 2 3 1 2 3 ];
y=[ 1 1 1 2 2 2 3 3 3 ];
z=[ 5 5 5 5 2 5 5 5 5 ];
% 确定网格坐标( x 和 y 方向的步长均取 0.1 )
[X,Y]=meshgrid(min(x):0.1:max(x),min(y):0.1:max(y));
% 在网格点位置插值求 Z ,注意:不同的插值方法得到的曲线光滑度不同
Z=griddata(x,y,z,X,Y,'v4');
% 绘制曲面
figure(1)
surf(X,Y,Z)
title 'Points to Surface by griddata'
hold on
plot3(x,y,z,'*')
% 读取离散点坐标( x,y,z )数据文件,生成空间曲面
% 数据文件格式为:每行分别为 x 、 y 和 z 坐标,各数值之间以空格作为分隔符
clc; clear;
load Points.txt; % 读取数据文件
x=Points(:,1);
y=Points(:,2);
z=Points(:,3);
% 下面三行为测试数据,分别是 9 个离散点的 xyz 坐标
x=[ 1 2 3 1 2 3 1 2 3 ];
y=[ 1 1 1 2 2 2 3 3 3 ];
z=[ 5 5 5 5 2 5 5 5 5 ];
% 确定网格坐标( x 和 y 方向的步长均取 0.1 )
[X,Y]=meshgrid(min(x):0.1:max(x),min(y):0.1:max(y));
% 在网格点位置插值求 Z ,注意:不同的插值方法得到的曲线光滑度不同
Z=griddata(x,y,z,X,Y,'v4');
% 绘制曲面
figure(1)
surf(X,Y,Z)
title 'Points to Surface by griddata'
hold on
plot3(x,y,z,'*')