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); %绘制地形图

%这是最基本的结构,其他内容可以在此基础上添加

 

 

输出

posted @ 2019-08-05 20:51  阳光中的影子  阅读(2194)  评论(0编辑  收藏  举报