关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最近在学习mars老师的视频。按计划的。学习安卓

    转眼之间暑假就过去一大半了。还有14天就开学了。估计再过个一周,同学们就陆续回校了。这个假期借了很多书,虽然没有想象中那么高的效率,学习太多东西,不过还是学了点东西,起码自我感觉还算可以。我是先看了看java的基础知识,一本国外的java面向对象程序设计,说实话书挺好,不过对我不合适,学过c++之后,很多里面讲的思想差不多懂了,然后例子很多,看得有点头疼,应该找一本专门讲java语法的书的。那

    2022年3月8日
    66
  • 使用JS获取上一页的url地址

    使用JS获取上一页的url地址

    2021年10月30日
    67
  • leetcode-103二叉树的锯齿形层序遍历「建议收藏」

    leetcode-103二叉树的锯齿形层序遍历「建议收藏」给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]/** * Definition for a binary tree node. * struct TreeNode { * int

    2022年8月8日
    2
  • 孙鑫Java视频教程下载

    孙鑫Java视频教程下载刚刚学习Java。还没有入门。 孙鑫老师的这套教程还没有看完。把下载地址发上来,有兴趣的可以下来看看。 一共12集,每集大约2个半小时。讲得很详细,适合入门。 请用迅雷下载。 thunder://QUFodHRwOi8vdmlwLmlib29rOC5jb20vdmlkZW8vy+/2zkpBVkHO3sTRysIxMkNELzAxLnJhclpa|http://ww

    2022年5月13日
    43
  • 三极管导通条件与电位关系

    三极管导通条件与电位关系npn管导通条件:Ub>Ue,通常e极接地,即Ue为0V。饱和导通是Ub>Ue(锗0.2V/硅0.7V)pnp管导通条件:Ub0V。饱和导通是Ub

    2022年6月29日
    32
  • 文件系统的类型简介「建议收藏」

    文件系统的类型简介「建议收藏」文件系统的类型简介Linux支持多种文件系统类型,包括ext2、ext3、vfat、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(VirtualFileSystem),为各类文件系统提供一个统一的应用编程接口。根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为

    2022年9月15日
    0

发表回复

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

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