matlab interp插值函数

article/2025/9/29 16:47:06

本文转载自:https://www.jianshu.com/p/7d5e061747ca

什么是插值函数咧,我所理解的插值函数就是,有一些点但是直接plot出来的图,不大好看,可能是锯齿的散点的,但是你想要一个平滑的曲线,而且去掉那些不大好看的点,这就需要插值函数来解决了。

MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')

其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值。

注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。

用指定的算法计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。
’cubic’:该方法保留单调性与数据的外形;

图一因为有0值使其像个锯齿波,巨丑,而且也不适用某些仿真,插值过后顺眼多了,

 

然后就是二维三维插值函数。

命令2 interp2

功能 二维数据内插值
(1)ZI = interp2(X,Y,Z,XI,YI,method)
返回矩阵ZI,其元素包含对应于参量XI 与YI(可以是向量、或同型矩阵) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi 与Yi,此时,输出向量Zi 与矩阵meshgrid(xi,yi)是同型的。
(2)ZI = interp2(Z,XI,YI)
缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。

用指定的算法method 计算二维插值:
’linear’:双线性插值算法(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。

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

命令3 interp3

(4)VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。
%用指定的算法method 作插值计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值;
‘nearest’:最邻近插值。

[x,y,z,v] = flow(20);[xx,yy,zz] = meshgrid(.1:.25:10, -3:.25:3, 
-3:.25:3);vv = interp3(x,y,z,v,xx,yy,zz);slice(xx,yy,zz,vv,[6 9.5],[1 2],[-2 .2]); shading interp;colormap cool

命令4 griddata

功能 数据格点
(1)ZI = griddata(x,y,z,XI,YI,method)
用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。

用指定的算法method 计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’: 基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4 中的griddata 算法。

命令5 spline

功能 三次样条数据插值
格式
(1)yy = spline(x,y,xx)

x = [0 2 4 5 8 12 12.8 17.2 19.9 20]; y = exp(x).*sin(x);xx = 0:.25:20;yy = spline(x,y,xx);plot(x,y,'o',xx,yy)

命令6 meshgrid

功能 生成用于画三维图形的矩阵数据
格式 [X,Y] = meshgrid(x,y) 将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,
这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或曲面作图。

[X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
[X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。

[X,Y] = meshgrid(1:3,10:14)

 


http://chatgpt.dhexx.cn/article/0qDEo801.shtml

相关文章

MATLAB中的一维插值与函数拟合

本文主要记录Matlab中常用的一维插值与函数拟合的使用方法 文章目录 前言一、一维插值二、函数拟合2.1 多项式拟合2.1.1多项式拟合指令2.1.2 图形窗口的多项式拟合 2.2 指定函数拟合 参考资料 前言 最近在学习数学建模,这部分关于怎么使用Matlab,刚好记…

理解Redis单线程快的原因

看过相关Redis基础的同学可以知道Redis是单线程的,很多面试题也很可能会问到“为什么Redis是单线程的还那么快”。 单线程的内部的原理。 本力求简单讲清每个知识点,希望大家看完能有所收获。 这里就简单回顾一下吧: I/O多路复用的特点是…

Redis总结(八)redis单线程还是多线程问题

redis为什么可以支持高并发和它内部的工作模式有不可分割的关系: 绝大部分请求是纯粹的内存操作(非常快速)采用单线程,避免了不必要的上下文切换和竞争条件非阻塞IO - IO多路复用 Redis客户端对服务端的每次调用都经历了发送命令&#xff0…

redis单线程架构解析

简介 Redis使用单线程架构和I/0多路复用模型来实现高性能的内存数据库服务 单线程模型介绍 Redis单线程的优势 Redis是基于内存的,数据都存放在内存中,访问速度极快,这是Redis达到每秒万级别访问的重要基础非阻塞的I/O,Redis使…

详解redis单线程模型

背景:但凡你用redis都知道redis的一大特点就是单线程,那么在如今服务器普遍多核的时代下,为什么redis要采用单线程模型?单线程模型好在哪里?不用单线程模型redis是不是可以更快?带着这些问题我们一起来回顾…

2、Redis单线程高性能

Redis单线程,主要是指Redis的网络IO和键值对读写是由一个线程完成的。采用单线程的一个核心原因是避免多线程开发的并控制问题。 为什么这么快,Redis的大部分操作在内存中完成,再加上它高效的数据结构,这是它实现高性能的一个重要…

Redis单线程还是多线程?IO多路复用原理

目录 专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的?1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清空全局队列五、IO多路…

Redis 单线程还是多线程?

Redis 单线程还是多线程 前段时间无意间看到一篇博客,讲述了Redis6即将在年底发布的事情,好奇心驱动下搜索了官网,想看看新版Redis带来了什么新的功能,果然得到证实Redis在年底将发布新的版本:6.0,并且Red…

redis单线程如何处理高并发的

这里写目录标题 1.IO(阻塞IO)和NIO(非阻塞IO)的概念2.redis的线程模型3.redis的通信协议 1.IO(阻塞IO)和NIO(非阻塞IO)的概念 1.jdk1.4引入了NIO,但也有很多人在用阻塞I…

为什么Redis单线程却比多线程快

为什么Redis单线程却比多线程快 redis三大特点为什么Redis是单线程单线程的优劣势题外 redis三大特点 1.Redis是基于内存,内存的读写是非常快的 2.Redis是单线程,省去了线程之间的切换并且防止了死锁现象发生 3.Redis采用多路复用的技术,可以…

Redis单线程模型

1、Redis单线程模型初步理解 针对每次请求调用,Redis都需经历接受命令、执行命令和返回结果三个过程。其中,执行命令阶段,因Redis是单线程处理命令,于是每一条到达redis服务端的命令不会立刻执行,而是所有命令都进入一…

3、redis 单线程 vs 多线程

1、Redis为什么选择单线程? 是什么 这种问法其实并不严谨,为啥这么说呢? Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的,不限定版本问是否单线程也不太严谨。 ①版本3.x ,最早版本,也就是大家…

Redis单线程原理

Redis单线程原理 Redis是单进程单线程的,Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求…

【Redis】Redis单线程和多线程

Redis单线程 Redis为什么是单线程 Redis的版本很多,比如3.x、4.x、6.x等,版本不同,架构不同: 3.x版本,最早的版本,单线程4.x版本,严格意义上来说不是单线程,负责处理客户端请求的…

redis单线程模型阻塞问题浅析

redis知识速览 解决问题很好的一个方式就是先建立起“系统观”。这也就是说,如果我们想要深入理解和优化 Redis,就必须要对它的总体架构和关键模块有一个全局的认知,然后再深入到具体的技术点。 redis6.0之后就是多线程版本的了。 好久没写了…

Redis 单线程为什么速度这么快

总结了四点原因 1、基于内存,操作速度更快,每条命令的执行时间很短。 2、执行命令采用的是单线程操作,省去了线程切换的时空消耗。 3、采用了I/O多路复用,利用了epoll,提升了redis的I/O利用效率。 4、优秀的底层数…

redis单线程模式

1、redis单线程指的是:Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 **2、多线程开…

redis单线程

redis多线程6.0 redis单线程为什么快 单线程vs多线程 redis单线程指的是收到的读写命令是放到队列里,一条条执行的; redis用的io多路复用技术,所以可以一次性接收多个客户端请求,然后放到队列中; 先跟服务端建立连接…

Redis单线程和多线程

Redis单线程 Reids是单线程! Reids是单线程! Reids是单线程! Redis架构模型:Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 ,即文件事件处理器 文件事件处理器(file event handler) 主要是包含 4 个部分&…

Redis单线程模型详解

这里写目录标题 Redis 单线程模型简介文件事件常用的文件事件处理器客户端与Redis通信的一次流程 Redis为什么采用单线程模型Redis 为什么要引入多线程呢?为什么Redis单线程模型也能效率这么高? Redis 单线程模型简介 Redis 内部使用文件事件处理器 fil…