当前位置: 首页 > news >正文

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

 

 

相关文章:

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

1.网格和散点样本数据 插值是在位于一组样本数据点域中的查询位置进行函数值估算的方法。函数值是根据最接近查询点的样本数据点计算的。MATLAB 根据样本数据的结构,可以执行两种插值。样本数据可以形成网格,也可以是分散的。 网格化的样本数据使得插值…...

Python功能制作之简单的3D特效

需要导入的库: pygame: 这是一个游戏开发库,用于创建多媒体应用程序,提供了处理图形、声音和输入的功能。 from pygame.locals import *: 导入pygame库中的常量和函数,用于处理事件和输入。 OpenGL.GL: 这是OpenGL的Python绑定…...

leetcode-5-最长回文串

题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示…...

二、Oracle 数据库安装集

一、CentOS 安装 OCI下载地址 1. 启动 # 1. 登录服务器,切换到oracle用户,或者以oracle用户登录 su - oracle# 2. 打开监听服务 lsnrctl start# 3. 查看Oracle监听器运行状况 lsnrctl status# 4. 以sys用户身份登录 sqlplus /nolog# 5. 切换用户conn 用…...

【Python】Python中的常用函数及用法

目录 输入输出类型转换引用哈希字符串常用操作判断类型查找替换大小写转换文本对齐去除空白字符拆分和连接 列表常用操作增删改查增删改统计排序 元组常用操作 字典常用操作 范围随机数学比较常用函数三角函数数学常量 输入 input():从键盘等待用户的输入&#xff0…...

基于JavaEE的ssm公司员工信息管理系统的设计与实现

基于JavaEE的ssm公司员工信息管理系统的设计与实现043 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存…...

cornerstoneJS加载图片(base、矩阵)

cornerstoneJS默认加载dicom影像数据,将识别到的dicom数据转换成imageData数据,在界面上展示。故,cornerstoneJS也可直接加载imageData。 imageData数据的data是一个数组,每四个元素代表一个点,四个元素分别表示R、G、…...

3.Trunc截断函数用法

TRUNC函数用于对值进行截断 用法有两种:TRUNC(NUMBER)表示截断数字,TRUNC(date)表示截断日期 (1)截断数字 格式:TRUNC(n1,n2),n1表示被截断的数字&#xf…...

腾讯云 CODING 荣获 TiD 质量竞争力大会 2023 软件研发优秀案例

点击链接了解详情 8 月 13-16 日,由中关村智联软件服务业质量创新联盟主办的第十届 TiD 2023 质量竞争力大会在北京国家会议中心召开。本次大会以“聚焦数字化转型 探索智能软件研发”为主题,聚焦智能化测试工程、数据要素、元宇宙、数字化转型、产融合作…...

VSCode如何为远程安装预设(固定)扩展

背景 在使用VSCode进行远程开发时(python开发之远程开发工具选择_CodingInCV的博客-CSDN博客),特别是远程的机器经常变化时(如机器来源于动态分配),每次连接新的远程时,都不得不手动安装一些开…...

一文解析HTTP与HTTPS,它们的区别和联系

一文解析HTTP与HTTPS,它们的区别和联系 HTTP和HTTPS之间不同点 尽管HTTP和HTTPS在安全性方面存在差异,但它们仍然共享许多相同的基本特征和功能。这些相同点使得HTTP成为广泛应用的标准协议,并且HTTPS作为更安全的替代方案被广泛采用。HTTP…...

Faster RCNN网络数据流总结

前言 在学习Faster RCNN时,看了许多别人写的博客。看了以后,对Faster RCNN整理有了一个大概的了解,但是对训练时网络内部的数据流还不是很清楚,所以在结合这个版本的faster rcnn代码情况下,对网络数据流进行总结。以便…...

拒绝摆烂!C语言练习打卡第五天

🔥博客主页:小王又困了 📚系列专栏:每日一练 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题 📝2.第二题 &#x1f4d…...

关于LambdaQueryWrapper.or()导致错误

这个是原始的代码,到导致一个问题,后面所有的内容,都在这个or的右边,也就是整个查询语句就这一个or,而很明显( xxx or xxx)and()这才是我们要的,所以需要将这…...

Day17-Node后端身份认证-JWT

Day17-Node后端身份验证 一 密码加密 1 MD5加密 创建MD5.js//node提供了一个内置模块crypto用于密码加密 const crypto = require("crypto")module.exports.getMd5 = function(password){const md5...

onvif中imaging setting图像画质总结!

前言: 大家好,今天给大家来分享一篇关于图像质量的内容,这个内容是我在做onvif中的imaging setting的时候,关注到里面有关于: brightness(亮度)color saturation(色彩饱和度)contrast(对比度)sharpness(锐度)white balance(白平衡…...

not in效率低(MYSQL的Not IN、not EXISTS如何优化)

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 目录 …...

微信小程序拉起支付报: 调用支付JSAPI缺少参数: total_fee

1. 调用支付JSAPI缺少参数: total_fee 2. 检查返回给前端调起支付的参数是否正确 一开始是params.put("package", prepay_id); 回来改回params.put("package", "prepay_id"prepay_id);...

Thinkphp6 如何 生成二维码

最近需要用到使用到二维码,需要将对应的网址输出生成二维码,Thinkphp6实现还是比较简单的: 第一步:安装 think-qrcode composer require dh2y/think-qrcode第二步:在对应的控制器使用 use dh2y\qrcode\QRcode;第三步&a…...

01.机器学习引言

1.机器学习的步骤 1. 数据搜集 其中数据划分,是将数据集分为训练集、验证集和测试集(通常不考虑时间) 2. 数据清洗 3. 特征工程 提取对象:原始数据(特征提取一般在特征选择之前) 提取目的:…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...