matlab已知点的坐标,绘制三维图
发布网友
发布时间:2022-04-28 21:54
我来回答
共3个回答
热心网友
时间:2022-06-23 14:02
clear all;
clc
close all
temdat=load('F:\test.txt');
x=temdat(:,1);
y=temdat(:,2);
z=temdat(:,3);
minx = min(x);
maxx = max(x);
miny = min(y);
maxy = max(y);
xtemp=linspace(min(x),max(x),1000);%1000这个是选择的数值样本大小,越大曲线越平滑%
ytemp=linspace(min(y),max(y),1000);
[X,Y]=meshgrid(xtemp,ytemp);
Z=griddata(x,y,z,X,Y,'cubic');%cubic的选取参照文档最下方关于griddata的说明,有时用nearest和V4会出现异常点%
surf(X,Y,Z)
shading interp
test的文档部分截图:
差值通常使用的interp和griddata的区别:
二者均是常用的二维插值方法,两者的区别是,
interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成。
griddata函数的已知数据点(X,Y)不要求规则排列,特别是对试验中随机没有规律采取的数据进行插值具有很好的效果。
griddata 调用方法:
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[...] = griddata(...,method)
[...] = griddata(...,method,options)
method 的值 为
'linear' -- 则,以三角形为基础的线性内插
'cubic' -- 则,以三角形为基础的三次方程内插
'nearest' -- 则,用最邻近的点 内插
'v4'-- -- 则,MATLAB 4 格点样条函数内插
默认'linear' 线性内插
热心网友
时间:2022-06-23 14:02
用plot3,不过效果不太好。可以考虑画等高线,或者画柱状图来体现落差。
如果是函数的话,就用surf。追问不是函数,是一系列离散的点,x,y,z分别是三个坐标的列向量,如何处理呢
追答可以用插值来得到比较好的曲面效果
热心网友
时间:2022-06-23 14:03
用plot3(x,y,z)