MATLAB中的三维曲面离散数据的常用插值方法interup2和griddata

首先,MATLAB中常用的三维曲面绘制函数是mesh和surf,这两个函数都要求输入的XYZ都为矩阵

years = 1950:10:1990;

service = 10:10:30;

wage = [ 150.697 199.592 187.625 179.323 195.072; 250.287 203.212 179.092 322.767 226.505;153.706 426.730 249.633 120.281 598.243];

[X, Y] = meshgrid(years, service);
% 三维曲面

figure

surf(X, Y, wage)

years 为 1x5的矩阵;service为 1x3的矩阵;

这里可以看到生成的X和Y变成了meshgrid(years,service)中的3x5矩阵 即years和service对应的网格;

意味着15个xy坐标对应着15个Z坐标,Z与X和Y是同类型矩阵;

可知surf要求输入的数据都为同类型的矩阵(一维向量不行),mesh同理

interup2函数

[XI,YI] = meshgrid(1950:5:1990,10:5:30)
ZI=interp2(X,Y,wage,XI,YI)
% ’linear’:双线性插值算法(缺省算法);
% ’nearest’:最临近插值;
% ’spline’:三次样条插值;
% ’cubic’:双三次插值
surf(XI, YI, ZI)

注意 ZI=interp2(X,Y,wage,XI,YI)这里的X Y wage可以用初始的一维向量替代即years,service;

gridate函数

surf(XI, YI, ZI)
ZI=griddata(X,Y,wage,(1950:5:1990)',10:5:30,'nearest');%插值
% linear’:基于三角形的线性插值(缺省算法);
% ‘cubic’: 基于三角形的三次插值;
% ‘nearest’:最邻近插值法;
%  ‘v4’:MATLAB 4 中的griddata 算法。
surf(XI, YI, ZI)

interup2函数和griddate函数的区别

1.首先函数的适用对象不同;

interup2函数要求元数据是x和y即NxM的矩阵 (要求有NxM个数据点)

griddate函数要求元数据可以是矩阵也可以是不成矩阵的散点 即(NxM个或者是N个xyz对应的数据点);

interp2的插值数据必须是矩形域,要求xy规则排列。griddata中x,y,v是包含分散(非均匀)样本点和数据的向量。

2.函数要求输入的数据格式不同;

例ZI=griddata(X,Y,wage,(1950:5:1990)',10:5:30,'nearest');%插值

中的(1950:5:1990)',10:5:30,第一个数据必须使用转置变为列向量

3.griddata更适用一个x对一个y对应一个z的三维散点插值

interup2更适用多个x对多个y对应多个z的三维散点插值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值