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 个等间距点的行向量。就可以不用主观的判断范围。
两种方法各有好处,大家可以根据实际情况进行选择。
法一效果图:
法二效果图:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35838.html