关于Matlab插值的问题,这些应该够用了吧

关于Matlab插值的问题,这些应该够用了吧Matlab插值方法

大家好,又见面了,我是你们的朋友全栈君。

一、散点数据插值

使用场景:用站点数据插值成网格数据时,可以使用散点数据插值方法
参考链接:https://ww2.mathworks.cn/help/matlab/ref/scatteredinterpolant.html
在这里插入图片描述

1.1 简要举例

  1. 创建包含 50 个散点的样本数据集。
    x = -3 + 6*rand(50,1);
    y = -3 + 6*rand(50,1);
    v = sin(x).^4 .* cos(y);
    
  2. 创建插值和查询点网格
    F = scatteredInterpolant(x,y,v);
    [xq,yq] = meshgrid(-3:0.1:3);
    
  3. 绘制结果
    F.Method = 'nearest';
    vq1 = F(xq,yq);
    plot3(x,y,v,'mo')
    hold on
    mesh(xq,yq,vq1)
    title('Nearest Neighbor')
    legend('Sample Points','Interpolated Surface','Location','NorthWest')
    

线性插值结果

1.2 可选的插值方法

注意:可以选择插值方法和“外插方法

Method 说明 连续性
‘linear’(默认值) 线性插值 C0
‘nearest’ 最近邻点插值 不连续
‘natural’ 自然邻点插值 C1(样本点处除外)
ExtrapolationMethod 说明
‘linear’ 基于边界梯度的线性外插。Method 为 ‘linear’ 或 ‘natural’ 时的默认值。
‘nearest’ 最近邻点外插。此方法的计算结果为边界处的最近邻点的值。Method 为 ‘nearest’ 时的默认值。
‘none’ 无外插。Points 凸包之外的任何查询返回 NaN。

二、网格数据插值

使用场景:粗分辨率网格降尺度为细分辨率网格时可用
参考链接:https://ww2.mathworks.cn/help/matlab/ref/griddedinterpolant.html
在这里插入图片描述

2.1 简要举例

  1. 创建网格样本点
[x,y] = ndgrid(-5:0.8:5);
z = sin(x.^2 + y.^2) ./ (x.^2 + y.^2);
surf(x,y,z)
  1. 构建插值结构
F = griddedInterpolant(x,y,z);
  1. 插值以提高分辨率
[xq,yq] = ndgrid(-5:0.1:5);
vq = F(xq,yq);
surf(xq,yq,vq)

2.2 可选插值方法

Method Value Value Value
‘linear’(默认值) 线性插值。在查询点插入的值基于各维中邻点网格点处数值的线性插值 C0 每个维需要至少 2 个网格点。比 ‘nearest’ 需要更多内存
‘nearest’ 最近邻点插值。在查询点插入的值是距样本网格点最近的值。 不连续 每个维度需要 2 个网格点。内存要求最低,计算速度最快
‘next’ 下一个邻点插值(仅限于一维)。在查询点插入的值是下一个抽样网格点的值。 不连续 需要至少 2 个点。内存要求和计算时间与 ‘nearest’ 相同
‘previous’ 上一个邻点插值(仅限于一维)。在查询点插入的值是上一个抽样网格点的值。 不连续 需要至少 2 个点。内存要求和计算时间与 ‘nearest’ 相同
‘pchip’ 保形分段三次插值(仅限一维)。在查询点插入的值基于邻点网格点处数值的保形分段三次插值。 C1 需要至少 4 个点。比 ‘linear’ 需要更多内存和计算时间
‘cubic’ 三次插值。在查询点插入的值基于各维中邻点网格点处数值的三次插值。插值基于三次卷积。 C1 网格必须有均匀间距,虽然每个维度上的间距不必相同。每维需要至少 4 个网格点。比 ‘linear’ 需要更多内存和计算时间
‘makima’ 修正 Akima 三次 Hermite 插值。在查询点插入的值基于次数最大为 3 的多项式的分段函数,使用各维中相邻网格点的值进行计算。为防过冲,已修正 Akima 公式。 C1 每一维需要至少 2 个点。产生的波动比 ‘spline’ 小,但不像 ‘pchip’ 那样急剧变平。计算成本高于 ‘pchip’,但通常低于 ‘spline’。内存要求与 ‘spline’ 类似
‘spline’ 三次样条插值。在查询点插入的值基于各维中邻点网格点处数值的三次插值。插值基于使用非结终止条件的三次样条。 C2 每维需要 4 个网格点。比 ‘cubic’ 需要更多内存和计算时间

ExtrapolationMethod – 外插方法
‘linear’ (默认) | ‘nearest’ | ‘next’ | ‘previous’ | ‘pchip’ | ‘cubic’ | ‘spline’ | ‘makima’ | ‘none’
外插方法,指定为 ‘linear’、‘nearest’、‘next’、‘previous’、‘pchip’、‘cubic’、‘spline’ 或 ‘makima’。另外,如果您希望网格域之外的查询返回 NaN 值,可以指定 ‘none’。

如果您省略 ExtrapolationMethod,则默认值是为 Method 指定的值。如果您同时省略 Method 和 ExtrapolationMethod 参数,则两个值均默认为 ‘linear’

总结及参考

(1)注意:可以选择插值方法和“外插方法
(2) 如果存在大量样本点或查询点,或者担心内存使用量太大,您可以使用网格向量来提高内存使用率。

与interp2/3的差别
interp2要求矩形网格(meshgrid);
griddata的插值网格可以随意,包括矩形网格和非矩形网格;
griddedInterpolant 比 interp2 更高效一些;
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140034.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的动态代理机制详解_java为什么是静态语言

    java的动态代理机制详解_java为什么是静态语言说起java动态代理,在我刚开始学java时对这项技术也是十分困惑,明明可以直接调通的对象方法为什么还要使用动态代理?随着学习的不断深入和工作经验的积累,慢慢的体会并理解了java动态代理机制。昨天再给公司新同事做技术培训时有同学就对动态代理产生了疑问,我这里梳理一遍一并记录一下,方便大家查看对自己也是加深记忆。(1)什么是代理?大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用。具体上讲…

    2022年10月9日
    3
  • 电脑显示应用程序无法正常启动_0x0007b

    电脑显示应用程序无法正常启动_0x0007b在使用电脑的时候,我们经常需要使用到不同的应用程序,但是在使用应用程序的时候,也会出现一些问题,比如说应用程序无法正常启动,显示0x000007b,这种情况很多人都不知道如何去处理。其实,应用程序无法正常启动的情况,里面的原因有很多,我们需要针对本次出现的0x000007b代码进行分析解决。而老毛桃也整理出了一份资料,下面就来看一下电脑应用程序无法正常启动提示0x000007b的解决方法吧!方法一…

    2025年7月24日
    3
  • sequencer是什么意思_centralism

    sequencer是什么意思_centralismsequencer产生transaction,而driver负责接收transaction。classmy_driverextendsuvm_driver#(my_transaction);

    2022年8月1日
    8
  • ods数据如何导入dw层_OD数据聚类

    ods数据如何导入dw层_OD数据聚类ODS层数据导入脚本

    2022年10月5日
    2
  • .net的winform中DialogResult属性的使用「建议收藏」

    .net的winform中DialogResult属性的使用「建议收藏」在winform项目开发时,我们常会遇到一种情况,在主窗口中需要打开窗口进行数据的增加或修改,关闭子窗口时需要刷新主窗口数据。此时就用到DialogResult这个属性。下面用一个简单例子说明DialogResult这个属性的使用方法。要实现下图中的功能,点击form1的跳转按钮,跳转至界面JumpForm,点击JumpForm界面的保存按…

    2022年6月22日
    54
  • h5作品介绍_editable联动

    h5作品介绍_editable联动其实这个属性很简单,既然把它放到一个单独的文章来说,他肯定有一些注意点要讲兼容性很好,兼容所有主流浏览器。用法很简单,只需要给你需要的标签填上即可。那么会出现一个神奇的效果。(文字可以编辑)语

    2022年8月1日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号