Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。

参考书目:

1、《MATLAB基础教程 (第三版) (薛山)》

2、《MATLAB R2020a完全自学一本通》

之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。

在本章中的代码,会以资源的形式发在我的博客里供大家免费下载学习。

关于插值法和拟合法的对比应用,我发在《MATLAB的应用》专栏中,如果有感兴趣的朋友,可以看一下。

数值分析中插值法和拟合法的对比_对数插值法-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qq_47248729/article/details/141933209?spm=1001.2014.3001.5502

数据插值

插值法是一种通过已知数据点来估计未知数据点的数学方法。它的基本思想是利用已知数据点之间的关系,构造一个函数来预测其他点的值。

### 数学定义

在一维情况下,给定一组数据点 (x0, y0), (x1, y1), ...., (xn, yn),插值法的目标是找到一个函f(x),使得对于每个已知点 xi,都有 f(xi) = yi。

线性插值

线性插值是最简单的插值方法之一。对于两个相邻的已知点 (xi, yi) 和 (x(i+1), y(i+1),线性插值的公式为:

其中,x 是我们想要插值的点,f(x) 是在该点的估计值。

拉格朗日插值

拉格朗日插值法提供了一种多项式插值的方式。对于 n+1 个已知点,拉格朗日插值多项式 L(x) 定义为:

其中,li(x) 是拉格朗日基多项式,定义为:

一维插值示意图

以下是一个一维插值的示意图,展示了已知数据点和插值结果。

% 定义已知数据点  
x = [1, 2, 3, 4, 5, 6, 7]; % x坐标  
y = [2.5, 3.5, 5.0, 7.0, 6.5, 5.5, 4.0]; % y坐标  % 定义插值点  
xi = linspace(1, 7, 100); % 在1到7之间生成100个插值点  % 进行线性插值  
yi = interp1(x, y, xi, 'linear');  % 绘制结果  
figure;  
plot(x, y, 'o', 'MarkerFaceColor', 'r'); % 原始数据点  
hold on;  
plot(xi, yi, '-b'); % 插值结果  
title('一维线性插值');  
xlabel('x');  
ylabel('y');  
legend('已知数据点', '插值结果');  
grid on;

插值的目的是利用已知的观测点为物理量构建一个简单且连续的解析模型,以便推测该物理量在非观测点的特性。插值方法包括多项式插值、埃尔米特插值、分段插值与样条插值、三角函数插值和辛克插值等。这些方法在数据分析、信号处理和图像处理等多个领域具有重要应用。
 

接下来就对一维插值开始展开介绍

1 一维插值 

当被插值函数y=f(x)为一元函数时,为一维插值。MATLAB使用interp1函数来实现一维插值。interp1函数的调用格式如下:

vq=interp1(x,v,xq)使用线性插值返回一维函数在特定查询点的插入值。向量×包含样本点,v包含对应
值v(x)。向量xq包含查询点的坐标。
如果您有多个在同一点坐标采样的数据集,则可以将v以数组的形式进行传递。数组v的每一列都包含一组不同的一维样本值。

vq=interp1(x,v,xq,method)指定备选插值方
法:'linear'、、'nearest'、'next'、'previous'、'pchip'、'cubic'、'v5cubic'、‘makima′或'spline'。默认方法为'linear'。

vq=interp1(x,v,xq,method,extrapolation)用于指定外插策略,来计算落在x域范围外的点。如果希望使用method算法进行外插,可将extrapolation设置为‘extrap'。也可以指定一个标量值,这种情况下,interp1将为所有落在x域范围外的点返回该标量值。

vq=interp1(v,xq)返回插入的值,并假定一个样本点坐标默认集。默认点是从1到n的数字序列,其中n
取决于v的形状:
(1) 当v是向量时,默认点是1:length(v)。
(2) 当v是数组时,默认点是1:size(v,1)。

1.1 分段线性插值(linear)

分段线性插值的算法是在每个小区间[x_i,x_i+1]上采用简单的线性插值。在区间[x_i,x_i+1]上上的子插值多项式为:

在整个区间[xi,xn] 上的插值函数为:

其中li(x) 的定义如下:

例:利用interp1函数对y=sin(x)进行分段线性插值。

x=0:2*pi;
y=sin(x);
xx=0:0.5:2*pi;
yy=interp1(x,y,xx);
plot(x,y,'s',xx,yy)

1.2 一维快速傅里叶插值

维快速傅里叶插值利用函数`interpft`将输入数据转换到频域,然后通过更多点的傅里叶逆变换将其转换回时域,从而实现数据的增采样。函数`interpft`的调用格式如下:

y=interpft(x,n)在x中内插函数值的傅里叶变换以生成n个等间距的点。interpft对第一个大小不等于1的维度进行运算。


y=interpft(X,n,dim)沿维度dim运算。例如,如果x是矩阵,interpft(X,n,2)将在x行上进行运
算。

例:利用一维快速傅里叶插值实现数据增采样。

x = 0:1.2:10;
y = sin(x);
n = 2*length(x);
yi = interpft(y,n);
xi = 0:0.6:10.4;
hold on;
plot(x,y,'ro');
plot(xi,yi,'b.-');
title('一维快速傅里叶插值');
legend('原始数据','插值结果');

1.3 快速fourier算法 

当数据点呈现周期分布时,用上面的几种插值算法效果都不是很好,这时可以使用interpft函数进行插值,此函数使用快速foumier算法做一维插值,其调用格式如下:

 y = interpft(x,n)

注意:它返回周期在重采样的n个等距点的插值,n必须大于x的长度

例:采用interpft函数对sin函数插值。

x = 0:1.2:10;
y = sin(x);
z = interpft(y,15);
xx = linspace(0,2*pi,15);
plot(x,y,'-o',xx,z,':o')

2 二维插值

当被插值函数y=f(x)为二元函数时,为二维插值:MATLAB使用interp2函数来实现二维插值。interp2函数的调用格式如下:

Vq=interp2(X,Y,V,Xq,Yq):使用线性插值返回双变量函数在特定查询点的插入值。结果始终穿过函数的原始采样。X和Y包含样本点的坐标。V包含各样本点处的对应函数值。Xq和Yq包含查询点的坐标。

Vq=interp2(V,Xq,Yq):  假定一个默认的样本点网格。默认网格点覆盖矩形区域X=1:n和Y=1:m,其中[m,n]=size(V)。如果您希望节省内存且不在意点之间的绝对距离,则可使用此语法。

Vq=interp2(V):  将每个维度上样本值之间的间隔分割一次,形成细化网格,并基于该网格上返回插入值。

Vq=interp2(V,k):  将每个维度上样本值之间的间隔反复分割k次,形成细化网格,并基于该网格上返回插
入值。这将在样本值之间生成2k-1个插值点。

Vq=interp2(_-,method):  指定备选插值方法:‘linear'、‘nearest'、'cubic'、‘makima'或
'spline'。默认方法为‘linear'。

Vq=interp2(---,method,extrapval):  还指定标量值extrapval,此参数会为处于样本点域范围外的所有查询点赋予该标量值。
如果为样本点域范围外的查询省略extrapval参数,则基于method参数,interp2返回下列值之一:
(1) 对于'spline'和‘makima'方法,返回外插值
(2) 对于其他内插方法,返回NaN值

例:

[X,Y] = meshgrid(-3:.25:3);
Z = peaks(X,Y);
[XI,YI] = meshgrid(-3:.125:3);
ZI = interp2(X,Y,Z,XI,YI);
mesh(X,Y,Z),hold,mesh(XI,YI,ZI+15)
hold off
axis ([-3 3 -3 3 -5 20])

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

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

相关文章

Java项目——苍穹外卖(二)

Redis 简介 Redis是一个基于内存的key-value结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 基础操作 启动 在redis安装目录中打开cmd,输入如上图指令即可启动,按下crtl…

【图像匹配】基于SIFT算法的图像匹配,matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SIFT算法的图像匹配,用matlab实现。 一、案例背景和算法介绍 本…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

Linux下root用户共享conda环境给其他用户

首先可以先用命令查看环境存储位置 conda env list 比如我的root用户的base环境 # conda environments: # base * /usr/local/miniconda3 在root下先给环境添文件夹加普通用户的权限 chmod -R 755 /usr/local/miniconda3 接下来新建一个用户&#xff0…

Python 课程14-TensorFlow

前言 TensorFlow 是由 Google 开发的一个开源深度学习框架,广泛应用于机器学习和人工智能领域。它具有强大的计算能力,能够运行在 CPU、GPU 甚至 TPU 上,适用于从小型模型到大规模生产系统的各种应用场景。通过 TensorFlow,你可以…

Unity+LeapMotion2的使用

开始吧 导入步骤1.到官网下载软件并安装2.安装插件3.场景中添加检测管理器4.场景中添加手部模型 更多细节 导入步骤 1.到官网下载软件并安装 地址 重启电脑后连接设备 可以看到连接成功 2.安装插件 (也可以看官方教程) Project—>PackageManag…

从AI应用排行榜选择AI产品(9月)

2024年9月13日,OpenAI公司宣布推出其全新的AI模型:o1,在数学、编程和科学问题的解决处理能力上取得了显著进步。该模型通过自我对弈强化学习(Self-play RL)和思维链(Chain of Thought, CoT)技术…

openssl的使用

1、编译 Github下载:https://github.com/openssl/openssl 官网下载:https://openssl-library.org/source/index.html 官网历史版本:https://www.openssl.org/source/old/ 1.1 Windows下编译 我的文章:OPC UA使用 Openssl库编译…

0基础带你入门Linux之使用

1.Ubuntu软件管理 回顾一下,我们之前使用su root切换到root模式,使用who 发现为什么显示的还是bd用户呢?为什么呢? 这个who是主要来查看的是我们登录的时候是以什么用户登录的 所以即使我们使用who进行查看的时候显示的还是bd用…

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程,并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…

SysML图例-重症输液泵

SysML图中词汇 infusion pump 输液泵。替代传统的重力式吊瓶输液,达到更加精准和更加安全给药的目的。 syringe pump 注射泵。也称作微量输液泵,主要目的是对容量式输液泵在微量给药方面的一个补充。

ECMAScript与JavaScript的区别

目录 一、什么是ECMAScript? 二、什么是JavaScript? 三、ECMAScript与JavaScript的关系 3.1 ECMAScript规范版本 3.2 JavaScript的实现 四、ECMAScript与JavaScript的主要区别 4.1 规范与实现的区别 4.2 版本更新 4.3 环境支持 4.4 语言特性 五…

中秋期间互联网产品故障事件(晋江、115盘、阿里云盘)盘点

24年中秋期间,除了肆掠的“贝碧嘉”台风外,互联网故障bug事件也不少,趁着有空盘点下,可作为员工信息安全培训案例。 一:晋江文学城访问异常(基础环境故障类) 9月14日,“晋江崩了”冲…

【python设计模式3】创建型模式2

目录 抽象工厂模式 建造者模式 单例模式 创建型模式概述 抽象工厂模式 抽象工厂模式:定义一个工厂类的接口让工厂子类来创建一系列相关或者相互依赖的对象。相比工厂方法模式,抽象工厂模式中的每一个具体工厂都生产一套产品。下面是生产厂商生产一部手…

VSCode扩展连接虚拟机MySQL数据库

在虚拟机安装MySQL vscode通过ssh远程登录Ubuntu 在vscode终端运行以下命令。 sudo apt-get install mysql-server-5.7 用以下命令确认MySQL是否安装完成。 sudo mysql MySQL安装成功。 在VSCode安装SQL扩展 扩展名:MySQL Shell for VS Code。 安装完成后&am…

【2025】智慧居家养老服务平台的设计与实现、基于AI的居家养老服务平台、居家养老服务平台开发、智慧养老服务平台设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

55.【C语言】字符函数和字符串函数(strstr函数)

11.strstr函数 *简单使用 strstr: string string cplusplus的介绍 点我跳转 翻译: 函数 strstr const char * strstr ( const char * str1, const char * str2 ); 或另一个版本char * strstr ( char * str1, const char * str2 ); 寻找子字符串 返回指向第一次出现在字…

从零开始学PostgreSQL (十四):高级功能

目录 1. 简介 2. 视图 3. 外键 4. 事务 5. 窗口函数 6. 继承 7. 结论 简介 PostgreSQL是一个强大且开源的关系型数据库管理系统,以其稳定性、功能丰富性和对SQL标准的广泛支持而闻名。它不仅提供了传统的关系型数据库功能,如事务处理、外键约束和视图&am…

CISP-PTE CMS sqlgun靶场

sql靶场有个搜索框先点一下go,有回显说明存在漏洞 有个xss 然后在这里尝试sql注入 输入 -1 union select 1,2,3# 有回显可以查看数据库 然后查询数据库,用户 查询数据库的表名 查询它的数据这里admin用户的密码是md5加密 去解密看看 然后扫描ip目录发…

Zookeeper 3.8.4 安装和参数解析

安装 zookeeper 之前必须先安装 JDK,有关Linux环境JDK可以参考我以前写的博文 1、关于Linux服务器配置java环境遇到的问题 2、Linux环境安装openJDK 3、Centos7.3云服务器上安装Nginx、MySQL、JDK、Tomcat环境 文章目录 1. zookeeper 安装2. 参数解析 1. zookeeper …