matlab使用教程(20)—插值基础

1.网格和散点样本数据

        插值是在位于一组样本数据点域中的查询位置进行函数值估算的方法。函数值是根据最接近查询点的样本数据点计算的。MATLAB 根据样本数据的结构,可以执行两种插值。样本数据可以形成网格,也可以是分散的。
        网格化的样本数据使得插值更加高效,因为有组织的数据结构使得 MATLAB 能够轻松找到最靠近查询点的样本数据点。然而,对散点数据进行插值需要数据点的“Delaunay 三角剖分”,这就增加了一重计算。因此,如果您的数据可以逼近为一个网格,则与散点插值相比,网格插值可以节省大量的计算时间和内存使用量。
        以下主题讨论了两种插值方式:
        • “插入网格数据” 讨论轴对齐网格格式的样本数据的一维插值和 N 维插值:

        • “内插散点数据” 讨论散点数据的 N 维插值:  

1.1 插值与曲线拟合

        MATLAB 中提供的插值方法可创建经过样本数据点的插值函数。也就是说,如果查询一个样本位置的插值函数,会取回精确的样本数据值而不是逼近。对比插值,曲线和曲面拟合算法则不需要通过样本数据点。有关曲线拟合的详细信息,请参阅 Curve Fitting Toolbox。

1.2 网格逼近技术

        在某些情况下,可能需要数据的逼近网格。例如,网格具有的点可以位于曲线上。如果数据是基于经纬度的,则可能出现这样的数据集:
        使用曲线网格,您实际上是处理一组散点数据,并且必须使用计算成本更高的散点插值函数对这些值进行插值。然而,虽然输入数据无法直接网格化,但有时可以在合适的区间用直网格线来逼近曲线网格:

 

        您可以通过创建一组具有适当间距的网格向量来创建逼近网格。用直线逼近曲线网格的优点是可获得基于网格的插值的性能,但代价是数据略微失真。有关创建网格向量的详细信息,请参阅“网格表示法” 。

2.插入网格数据

        网格数据由形成网格的等间距点上的值或测量值组成。网格数据应用于许多领域,如气象学、测绘学和医学成像。在这些领域,经常以固定空间间隔取测量值,且可能随时间进行测量。这些有序的数据网格的范围可以从一维(对于简单时间序列)到四维(对于随时间变化的三维体测量)或更高维。网格数据的一些示例有:
        • 一维:随时间变化的股票价格
        • 二维:曲面的温度
        • 三维:大脑的 MRI 图像
        • 四维:随时间变化的海洋水体测量值
        在所有这些应用中,基于网格的插值可高效地将数据的有用性扩展到未进行测量的点。例如,如果您有某股票的小时价格数据,可以使用插值来逼近每 15 分钟的价格。

2.1 MATLAB 网格插值函数

        MATLAB 提供几种用于基于网格插值的工具:
        1)网格创建函数
        meshgrid ndgrid 函数创建各种维度的网格。 meshgrid 可以创建二维或三维网格,而 ndgrid 可以创建任意维数的网格。这些函数使用不同输出格式返回网格。您可以使用 pagetranspose(从 R2020b开始)或 permute 函数在这些网格格式之间进行转换,以交换网格的前两个维度。
        2)插值函数:
        interp 系列函数包括 interp1 interp2 interp3 interpn。每个函数都设计用于对具有特定维数的数据进行插值。 interp2 interp3 使用 meshgrid 格式的网格,而 interpn 使用 ndgrid 格式的网格。
        3)插值对象
        griddedInterpolant 对象支持对 ndgrid 格式的数据进行任意维数的插值。这些对象还支持多值插值(从 R2021a 开始),其中每个网格点可以有多个关联的值。与使用 interp 函数相比,使用 griddedInterpolant 对象具有内存和性能优势。 griddedInterpolant 为插值对象的重复查询提供了显著的性能改进,而 interp 函数在每次调用时都会执行新计算。此外,griddedInterpolant 以内存高效格式存储采样点,并以多线程方式利用多核计算机处理器。

2.2 网格表示法

        MATLAB 允许按以下三种方式之一表示网格:完整网格、简洁网格或默认网格。默认网格和简洁网格主要是分别为了方便使用和提高效率。
        1)完整网格
        完整网格是一种以显式方式定义所有点的网格。ndgrid meshgrid 的输出定义一个完整网格。您可以创建均匀的完整网格,其中每个维度中的点具有相等的间距,或创建非均匀的完整网格,其中一个或多个维度的间距不同。均匀网格在不同维度上可以有不同间距,但每个维度内的间距是固定的。
        均匀完整网格的示例如下:
[X,Y] = meshgrid([1 2 3],[3 6 9 12])
X =
1 2 3
1 2 3
1 2 3
1 2 3
Y =
3 3 3
6 6 6
9 9 9
12 12 12
        2)简洁网格
        在处理大型网格时,显式定义网格中的每个点会消耗大量内存。简洁网格表示法无需完整网格的内存使用量。简洁网格表示法只存储网格向量(每个维度对应一个),而不存储整个网格。各网格向量共同隐式定义了网格。事实上, meshgrid ndgrid 的输入是网格向量,这些函数复制网格向量以形成完整网格。简洁网格表示法使您能够绕过网格创建,并将网格向量直接提供给插值函数。例如,假设有两个向量, x1 = 1:3 x2 = 1:5 。可以将这些向量视为沿 x1 方向的一组坐标和沿 x2 方向的一组坐标,如下所示:
        每个箭头指向一个位置。使用这两个向量可以定义一组网格点,其中一组坐标由 x1 给定,另一组坐标由x2 给定。在复制网格向量时,它们构成了组成完整网格的两个坐标数组:
        您的输入网格向量可能是单调或非单调的。单调向量所含的值在该维中递增,或在该维中递减。反之,非单调向量含有的值会上下波动。如果输入网格向量是非单调的,如 [2 4 6 3 1] ,则 [X1,X2] = ndgrid([2  4 6 3 1]) 输出非单调网格。如果要将网格传递给其他 MATLAB 函数,网格向量应当是单调的。 sort 函数可用于确保单调性。
        3)默认网格
        在某些应用中,只有网格点的值才是重要的,而网格点之间的距离并不重要。例如,大多数 MRI 扫描收集的数据在所有方向上都是等间距的。在这种情况下,您可以允许插值函数自动生成默认网格表示来处理数据。为此,无需提供插值函数的网格输入。当您不提供网格输入时,该函数会自动将数据视为位于单位间距的网格上。该函数在执行时创建此单位间距的网格,省去您自己创建网格的麻烦。

2.3 示例:二维网格上的温度插值

        假设在一个曲面上以 5 厘米固定间隔收集温度数据,在每个方向上延伸 20 厘米。使用 meshgrid 创建完整网格。
[X,Y] = meshgrid(0:5:20)
X =
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
Y =
0 0 0 0 0
5 5 5 5 5
10 10 10 10 10
15 15 15 15 15
20 20 20 20 20
        每个网格点的坐标 (x,y) 表示为 X Y 矩阵中的对应元素。第一个网格点由 [X(1) Y(1)] 给出,即 [0 0],下一个网格点由 [X(2) Y(2)] 给出,即 [0 5],依此类推。现在,创建一个矩阵来表示网格上的温度测量值,然后将数据绘制为曲面。
T = [1 1 10 1 1;
1 10 10 10 10;
100 100 1000 100 100;
10 10 10 10 1;
1 1 10 1 1];
surf(X,Y,T)
view(2)

        虽然中心网格点的温度很高,但从原始数据来看,其位置和对周围网格点的影响并不明显。
要将数据分辨率提高 10 倍,请使用 interp2 将温度数据插值到使用 0.5 厘米间隔的更精细的网格上。再次使用 meshgrid 创建由矩阵 Xq Yq 表示的更精细的网格。然后,将 interp2 与原始网格、温度数据和新网格点结合使用,绘制生成的数据。默认情况下, interp2 在每个维度中使用线性插值。
[Xq,Yq] = meshgrid(0:0.5:20);
Tq = interp2(X,Y,T,Xq,Yq);
surf(Xq,Yq,Tq)
view(2)

 

对温度数据进行插值可以增加图像的细节,并大大提高测量区域内数据的有用性。

2.4 网格插值方法对比

        MATLAB 中基于网格的插值函数和对象提供几种不同插值方法。在选择插值方法时,切记有些方法比其他方法需要更多的内存或更长的计算时间。您需要权衡这些资源,以实现结果所需要的平滑度。下表给出了应用于同一一维数据的每种插值方法的预览,并概述了每种方法的优点、取舍和要求。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab使用

Matlab使用 界面介绍 新建脚本:实际上就是新建一个新建后缀为.m的文件 新建编辑器:ctrlN 打开:打开最近文件,以找到最近写过的文件 点击路径,切换当前文件夹 预设:定制习惯用的界面 常见简单指令 ;…

十亿次实验,用概率解读周易大衍筮法的奥秘

还记得封神电影里的文王占卜吗? 也就是著名的大衍筮法。 《易传》曰:大衍之数五十,其用四十有九。分而为二以象两,挂一以象三, 揲之以四以象四时,归奇于扐以象闰,五岁再闰,故再扐而…

解决云服务连接时长过短,不到一会儿自动断开

我们在使用xshell或者FinalShell连接云服务器操作时,总是十分钟就自动断开,很烦, 下面我们设置一下,让他可以使用很长时间(需要有一定的linux命令的基础) cd /etc/ssh 进入到ssh这个目录,查看…

k8s ingress

一、浅谈ingress (ingress 是与service配合使用的) Ingress能把Service(Kubernetes的服务)配置成外网能够访问的URL,流量负载均衡,及SSL,并提供域名访问的虚拟主机等,客户通过访问UR…

万界星空科技/免费MES系统/免费质量检测系统

质量管理也是万界星空科技免费MES中的一个重要组成部分,旨在帮助制造企业实现全面的质量管理。该系统涵盖了供应商来料、生产过程、质量检验、数据分析等各个环节,为企业提供了一站式的质量管理解决方案。 1. 实时质量监控 质量管理能够实时监控生产过程…

【使用 k 折叠交叉验证的卷积神经网络(CNN)】基于卷积神经网络的无特征EMG模式识别研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

攻防世界-warmup

原题解题思路 只有一张图片,就查看源代码,有一个source.php。 查看source.php,白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的,构造payload。 http://61.147.171.105:55725/sourc…

JS逆向-某招聘平台token

前言 本文是该专栏的第56篇,后面会持续分享python爬虫干货知识,记得关注。 通常情况下,JS调试相对方便,只需要chrome或者一些抓包工具,扩展插件,就可以顺利完成逆向分析。目前加密参数的常用逆向方式大致可分为以下几种,一种是根据源码的生成逻辑还原加密代码,一种是补…

阿里云使用WordPress搭建个人博客

手把手教你使用阿里云服务器搭建个人博客 一、免费创建服务器实例 1.1 点击试用 点击试用会需要你创建服务器实例,直接选择默认的操作系统即可,点击下一步 1.2 修改服务器账号密码 二、创建云数据库实例 2.1 免费获取云数据库使用 2.2 实例列表页 在…

PHP自己的框架实现debug调试模式和时区(完善篇三)

1、实现效果通过config设置开关debug调试模式 2、debug调试模式设置和时区设置 error_reporting和display_errors点击查看详细讲解 public static function run(){//定义常量self::_set_const();//创建模块目录self::_mk_module();//加载文件self::_import_file();self::_set_…

LVS+Keepalived集群

目录 Keepalived Keepalived概述 Keepalived 工作原理 主要模块及其作用 LVSKeepalived 高可用群集搭建 所需服务器 配置负载调度器 配置keeplived 启动 ipvsadm 服务 调整 proc 响应参数,关闭Linux 内核的重定向参数响应 配置节点服务器 测试验证 Keepa…

交换机生成树STP

生成树协议(spanning-tree-protocol,stp):在具有物理环路的交换机网络上生成没有回路的逻辑网络的方法,生成树协议使用生成树算法,在一个具有冗余路径的容错网络中计算出一个无环路的路径,使一部分端口处于…

VR全景加盟项目如何开展?如何共赢VR时代红利?

VR全景作为一个新兴蓝海项目,相信有着很多人刚接触VR行业的时候都会有这样的疑问:VR全景加盟后项目如何开展?今天,我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去,学校、…

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

视频效果:变压器三种方法下故障诊断Python代码_哔哩哔哩_bilibili代码运行要求:tensorflow版本>2.4.0,Python>3.6.0即可,无需修改数据路径。 1.数据集介绍: 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。…

Ubuntu20.04安装SNMP服务

在线安装snmp 1.安装snmp服务 sudo apt-get install updatesudo apt-get install snmp snmpd snmp-mibs-downloader2.重启SNMP服务 sudo /etc/init.d/snmpd restart3.查看snmp配置 sudo grep -Ev ^$|^# /etc/snmp/snmpd.conf 离线安装SNMP (重要) 我…

Django基础1——项目实现流程

文章目录 一、前提了解二、准备开发环境2.1 创建项目2.1.1 pycharm创建2.1.2 命令创建 2.2 创建应用 例1:效果实现例2:网页展示日志文件 一、前提了解 基本了解: 官网Django是Python的一个主流Web框架,提供一站式解决方案&#xf…

8.部署项目

项目地址:RuoYi-Cloud-Plus: 项目正式入驻 dromara 开源社区 迁移地址: https://gitee.com/dromara/RuoYi-Cloud-Plus 1.获取源码 需要有gitee账户 先把源码fork到自己的仓库中 需要多等待一段时间 勾选对应的环境 构建项目 2.sql导入 将sql导入到与sql文件名…

# 电脑好用的工具推荐

电脑好用的工具推荐 文章目录 电脑好用的工具推荐必装工具浏览器火绒安全卸载工具Geek迅雷 记笔记工具Typora印象笔记 开发工具IntelliJ IDEAVisual Studio CodeDbeaverAnother Redis Desktop Manager 备份工具百度网盘阿里云盘一刻相册蓝奏云 必装工具 浏览器 就别装那些乱七…

https非对称加密算法

非对称加密算法原理 在客户端公开公钥,服务端保存私钥 1.客户端第一次请求先请求443端口,从443端口下载公钥。 2.客户端将数据进行公钥算法进行加密,将秘文发送到服务端 服务端收到秘文后,通过私钥算法进行解密得到明文数据。…

cuda gdb调试

如果cudaDeviceEnablePeerAccess函数不支持或不起作用,您仍然可以尝试其他方法来实现GPU之间的数据交换和通信。以下是一些替代方法: 通过主机内存进行数据传输: 如果GPU之间的数据交换不是非常频繁,您可以将数据从一个GPU复制到…