matlab图片插值数据_【Matlab学习秘籍】三维散点插值成曲面

本篇博客介绍如何使用Matlab的griddata函数将三维散点坐标插值成曲面,通过示例代码展示插值过程,并指出插值点数量对效果的影响。
摘要由CSDN通过智能技术生成

1d428ecddc88fb261aace16733042622.png

问题:已知一系列三维散点坐标,如何插值成一个曲面,如下图所示。

68e72abe34bf2acbfe4b60143c5289f3.png
三维散点图

b82dc75ce272b5fa163eeb8b4ec1564b.png
三维散点和插值曲面图

解决方案:调用 Matlab 函数 griddata。

参考代码如下:

clear; clc;
% 生成一个多峰曲面
M = 30;
[X, Y, Z] = peaks(M);
% 从曲面图中选择部分点来做插值,数据越多插值效果越好
steps = [5, 3];
for ind = 1 : 2
    step = steps(ind);
    pos = 1:step:M;
    posX = X(pos, pos);
    posY = Y(pos, pos);
    posZ = Z(pos, pos);
    len = length(pos)*length(pos);
    x = reshape(posX, len, 1);
    y = reshape(posY, len, 1);
    z = reshape(posZ, len, 1);
    subplot(2,2,2*ind-1)
    surf(X, Y, Z)
    hold on
    plot3(x, y, z, 'or', 'MarkerFaceColor', 'r');
    hold off
    ylim([-2, 2]);
    % 调用 griddata 函数做插值,看看用我们选择的点来做插值是什么效果
    [Xi,Yi,Zi] = griddata(x,y,z,linspace(min(x),max(x), 30)',linspace(min(y),max(y), 30),'v4');
    subplot(2,2,2*ind)
    surf(Xi,Yi,Zi)
    hold on
    plot3(x, y, z, 'or', 'MarkerFaceColor', 'r');
    hold off
end

对比结果如下,可见选择的插值点数越多,插值效果越好。

01f7e594706097e620c9e1530925327a.png
不同点数插值效果对比

【秘籍】

  1. 三维散点插值成曲面,调用 griddata 函数即可;
  2. 点数越多,更容易将真实曲面的细节表现出来,因而插值效果越好。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值