matlab三维画图学习 三次插值
一些语句
size(a,x);
xis=size(xi,2); %获取矩阵xi的列数 xis=size(xi,1); %获取矩阵xi的行数
round函数 四舍五入,在绘制三维图形时如果数据比较大,可以通过以下方法把数据按应有比例减小 (我自己理解的,有错请指正)
x=round(x'./100+1); %这部分使数据减小,便于作图处理等 y=round(y'./100+1);
matlab中提供的插值函数 griddata ,其基本格式为 cz=griddata(x,y,z,cx,cy,'method');
其中,参数method有以下四个可以选择:
‘nearest’ :最邻近点插值
‘linear’ :线性插值
‘cubic’: 三次插值
‘V4’:matlab中所提供的的插值方法
基本格式中 x,y,z均是n为向量,代表数据点的坐标,向量cx cy是给定的网格点的横坐标和纵坐标,cz是矩阵,其行数和列数分别等于 cx 和 cy 的维数。(所以前面有提到round函数的用处,不然cz矩阵可能会特别特别大)
%手写一下代码 clear clc %读入数据 load textx.txt load texty.txt load textz.txt %数据进行处理 textx=round(textx'./100+1); texty=round(texty'./100+1); textz=textz'; zi=zeros(max_x,max_y); %这里max_x max_y我理解的是textx texty中最大的值(初学者) for i=1:len zi(x(i),y(i))=z(i); end xi=0:step:lx; %step为步长 lx为自己设定的x轴长度,要大于等于max_x ,ly同理 yi=0:step:ly zi=griddata(x,y,z,xi,yi,'V4');%绘制三维曲面图 subplot(1,2,1); mesh(xi,yi,zi); %绘制地形图 %这是最基本的结构,其他内容可以在此基础上添加
输出