Matlab中griddata函数拟合三维散点

griddata可以插入二维或三维散点数据
griddata有以下三种形式:
①vq = griddata(x,y,v,xq,yq)
②vq = griddata(x,y,z,v,xq,yq,zq)
③vq = griddata(___,method)
griddata和interp2的区别是,interp2的插值数据必须是矩形域,要求xy规则排列。griddata中x,y,v是包含分散(非均匀)样本点和数据的向量。

假设我们现在有三维数据如下:

x = [-14.97 -9.33 -6.58 -5.19 -4.55 -4.32 -4.31 -4.38 -4.47 -4.52 -4.47 -4.38 -4.31 -4.32 -4.55 -5.19 -6.58 -9.33 -14.97];


y = [-22.5 -20 -17.5 -15 -12.5 -10 -7.5 -5 -2.5 0 2.5 5 7.5 10 12.5 15 17.5 20 22.5];


z = [0 3.33 6.59 9.44 11.82 13.73 15.21 16.28 16.98 17.33 16.98 16.28 15.21 13.73 11.82 9.44 6.59 3.33 0];

有以下两种方法得到三维拟合曲面:

%法一
[xq,yq] = meshgrid(-16:0.1:-2, -25:50/140:25);
[X,Y,Z]=griddata(x,y,z,xq,yq,'V4');
xticks(0:1000:5400)
figure(2)
surf(X,Y,Z);
xlabel('x')
ylabel('y')
zlabel('z')
title('曲面拟合')


%法二
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');
surf(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
title('曲面拟合')

    法一的meshgrid函数是MATLAB中用于生成网格采样点数的函数,其参数设定较主观,例如本题知道了x和y的范围之后,就可以按之设置范围。注意两参数的维度规定是一样的。

    法二使用了linspace函数返回包含 min(x) 和 max(x) 之间的 100 个等间距点的行向量。就可以不用主观的判断范围。

    两种方法各有好处,大家可以根据实际情况进行选择。

法一效果图:

法二效果图:

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值