二维插值与MATLAB实例解析

  • 一、插值节点为网格节点
  • 二、插值节点为散乱节点
  • Addition:
    • (1)学会查看matlab帮助文档
    • (2)matlab脚本类型
    • (3)matlab三维绘图函数

二维插值,简单来说就是节点二维、插值函数二维,形如 z = f ( x , y ) z=f(x,y) z=f(x,y)。

  为什么要插值呢?假如我们要根据已知的二维数据来绘制对应的三维曲面图像,就需要很多点的x、y、z坐标,但给定的数据一般比较少,不能仅仅通过点数据画出三维图形。又或者要获取未知点的坐标值(大概的)。

一、插值节点为网格节点

网格节点,听命字就知道它是比较规则整齐的点了。相当于在 x y z xyz xyz平面内,一条条整齐的平行于 x , y x,y x,y轴的直线相交,再在 z z z轴方向对应一个值。

比如这样:

MATLAB插值命令:
z = i n t e r p 2 ( x 0 , y 0 , z 0 , x , y , ′ m e t h o d ′ ) z=interp2(x_{0},y_{0},z_{0},x,y,'method') z=interp2(x0​,y0​,z0​,x,y,′method′)
其中:
x 0 , y 0 为已知节点 , z 0 是对应的值; x_{0},y_{0}为已知节点,z_{0}是对应的值; x0​,y0​为已知节点,z0​是对应的值;
x 0 , y 0 分别为 m 纬、 n 纬向量, z 为 m ⋅ n 矩阵; x_{0},y_{0}分别为m纬、n纬向量,z为m\cdot n矩阵; x0​,y0​分别为m纬、n纬向量,z为m⋅n矩阵;
x , y 是要插值的节点, z 返回对应的插值得到的值; x,y是要插值的节点,z返回对应的插值得到的值; x,y是要插值的节点,z返回对应的插值得到的值;
m e t h o d 是插值方法,和一维插值相同: method是插值方法,和一维插值相同: method是插值方法,和一维插值相同:
′ n e a r e s t : ′ 'nearest:' ′nearest:′最近项插值
′ l i n e a r : ′ 'linear:' ′linear:′线性插值
′ s p l i n e : ′ 'spline:' ′spline:′立方样条插值
′ c u b i c : ′ 'cubic:' ′cubic:′立方插值

例1:

close all
clear,clcx=100:100:500;  %已知节点数据
y=100:100:400;
z=[636    697    624    478   450  698    712    630    478   420680    674    598    412   400662    626    552    334   310];pp=csape({x,y},z') %采用3次样条插值xi=100:10:500;yi=100:10:400;  %要插值的点
cz=fnval(pp,{xi,yi});          %返回字(xi,yi)处的值[i,j]=find(cz==max(max(cz)))  %找最高点的地址
x=xi(i),y=yi(j),zmax=cz(i,j)  %求最高点的坐标

二、插值节点为散乱节点

  散乱节点:给出了一些3维空间数据点的x、y、z坐标,但不像网格节点那样整齐。例1和例2一对比就明白了。

使用函数 g r i d d a t a ( ) griddata() griddata(),常见形式和简要说明如下:

(1)vq = griddata(x,y,v,xq,yq)

  使 v = f(x,y) 形式的曲面与向量 (x,y,v) 中的散点数据拟合。griddata 函数在 (xq,yq) 指定的查询点对曲面进行插值并返回插入的值 vq。曲面始终穿过 x 和 y 定义的数据点。

(2)vq = griddata(x,y,z,v,xq,yq,zq)

  拟合 v = f(x,y,z) 形式的超曲面。

(3)vq = griddata(___,method)

  使用上述语法中的任何输入参数指定计算 vq 所用的插值方法。method 可以是 ‘linear’、‘nearest’、‘natural’、‘cubic’ 或 ‘v4’。默认方法为 ‘linear’。

(4)[Xq,Yq,vq] = griddata(x,y,v,xq,yq)[Xq,Yq,vq] = griddata(x,y,v,xq,yq,method)

  还返回 Xq 和 Yq,其中包含查询点的网格坐标。

更多内容请查阅帮助文档。

例2:

close all
clc, clearx=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];xmm=minmax(x)  %求x的最小值和最大值
ymm=minmax(y)  %求y的最小值和最大值xi=xmm(1):xmm(2); %指定查询点(插值点)
yi=ymm(1):ymm(2);%使 v = f(x,y) 形式的曲面与向量 (x,y,v) 中的散点数据拟合。
% griddata 函数在 (xq,yq) 指定的查询点对曲面进行插值并返回插入的值 vq。
% 曲面始终穿过 x 和 y 定义的数据点。
zi1=griddata(x,y,z,xi,yi','cubic'); %立方插值
zi2=griddata(x,y,z,xi,yi','nearest'); %最近点插值zi=zi1;  %立方插值和最近点插值的混合插值的初始值
zi(isnan(zi1))=zi2(isnan(zi1))  %把立方插值中的不确定值换成最近点插值的结果subplot(1,2,1), plot(x,y,'*')
subplot(1,2,2), mesh(xi,yi,zi)


Addition:

(1)学会查看matlab帮助文档

matlab编程总会遇到很多没用过的函数,只要在MATLAB的命令行窗口输入

help 函数名

就可以看到他的简要帮助文本。

比如查询griddata这个函数的用法:

>> help griddata
griddata - 插入二维或三维散点数据此 MATLAB 函数 使 v = f(x,y) 形式的曲面与向量 (x,y,v) 中的散点数据拟合。griddata 函数在 (xq,yq)指定的查询点对曲面进行插值并返回插入的值 vq。曲面始终穿过 x 和 y 定义的数据点。vq = griddata(x,y,v,xq,yq)vq = griddata(x,y,z,v,xq,yq,zq)vq = griddata(___,method)另请参阅 delaunay, griddatan, interpn, meshgrid, ndgrid, scatteredInterpolantgriddata 的参考页

但使用doc 函数名更好一些,会弹出一个帮助文档的窗口,这也是我常用的,里面还有很多例子,可以帮助你很好的理解。帮助文档里面可能有些内容是英文内容,但都很好理解,一读就能明白的。

matlab的命令行也可以使用键盘的上、下键来查看历史输入的命令。

(2)matlab脚本类型

matlab脚本分为脚本实时脚本,后缀分别为.m.mlx,类似于python文件中的普通py文件和notebook,大家可以试试matlab的实时脚本,.m文件中函数的补全可以通过Tab键完成,而.mlx会自动补全。还有其他更多的特性。

实时脚本如图所示:

(3)matlab三维绘图函数

matlab绘制三维图主要有3种类型:plot3、mesh、surf(当然pie3绘制3维饼图也算是个三维图吧,但他需要的数据仅仅是各个分类的数值,是一维数据),具体如下,更多内容可以自行查阅帮助文档。

plot3 三维曲线图;
mesh 三维网格图;
meshc 除了生成网格图外,还在xy平面生成曲面的等高线;
meshz 除了生成网格图外,还在曲线下面加上个矩形垂帘;
surf 三维着色曲面图;
surfc 同时画出三维着色曲面图与等高线;
surfl 带光照的三维着色曲面图。

二维插值-MATLAB相关推荐

  1. 一篇文章带你搞定二维插值的 MATLAB 计算

    前面已经学习了二维插值的基本概念:一篇文章带你认识数学建模中的二维插值 本篇文章主要实现使用MATLAB进行二维插值计算 文章目录 一.网格节点的插值计算 二.散点数据的插值计算 1. 示例 1 2. ...

  2. MATLAB一维插值和二维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  3. 一篇文章带你认识数学建模中的二维插值

    本篇文章主要是认识数学建模中的二维插值 二维插值的具体计算可参考:一篇文章带你搞定二维插值的 MATLAB 计算 文章目录 一.引言 二.网格节点的概念 三.散乱节点的概念 四.二维插值的常见方法 1 ...

  4. 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值

    插值:求过已知有限个数据点的近似函数. 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小. 插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似 ...

  5. python升采样和插值_图像的降采样与升采样(二维插值)

    图像的降采样与升采样(二维插值) 转自:http://www.lofter.com/postentry?from=search&permalink=1cb3111d_6ee9587 1.先说说 ...

  6. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  7. python二维插值_python实现二维插值的三维显示

    本文实例为大家分享了二维插值的三维显示具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ 演示二维插值. "" ...

  8. matlab 把图像变成二维的,matlab图像怎么变成二维矩阵

    求:matlab二维直方图图像分割程序.. 我给你个网站``里面的教学很详细~~希望能帮到你~~~~反正里面的软件教程很多``就是不知道有没你要找的``如果有~~给我加分哈``http://tech. ...

  9. 插值函数总结(下篇之二维插值)

    命令2 interp2 功能:二维数据内插值(表格查找) 格式1:z1 = interp2(x,y,z,x1,y1)  返回矩阵z1,其元素包含对应于参量x1与y1(可以是向量.或同型矩阵) 的元素, ...

最新文章

  1. next.js_Next.js手册
  2. windows平台下vlc编译之六:vlc-0.9.8a的编译
  3. [笔记]filter,空字符,0,None都是False应用
  4. Innobackupex实现mysql在线搭建master-slave主从复制
  5. AI Studio 学习 Go 豆瓣电影爬取
  6. javafx_JavaFX在这里留下来!
  7. python实时绘图暂停_Python实时绘图
  8. Foxmail忘了帐户访问密码咋办?
  9. linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...
  10. 大型基金电商多点开花 中小公司望洋兴叹
  11. [回帖整理] 创业难
  12. Tapestry5项目的导入
  13. python开发工程师需要掌握什么技能 知乎_全栈工程师自述:我的编程能力为什么突飞猛进?|知乎4千4百赞...
  14. andriod 连接数据库(MySQL)
  15. C专家编程 第9章 再论数组 9.6 C语言的多维数组
  16. 马尔科夫链细致平衡条件
  17. AD转换精度提高方法
  18. 十分钟文档化你的C++代码——DoxyGen
  19. python-OpenCv调用IP摄像头APP
  20. SpringBoot程序排除@Configuration配置类

热门文章

  1. 云服务器系统一键安装,云服务器一键安装系统
  2. Netty入门与实战:仿写微信IM即时通讯系统
  3. 握草!查询提升200倍,它难道想干掉传统数据库?
  4. 如何禁止计算机自动安装驱动,win10系统禁止自动安装驱动的详细技巧
  5. Java架构师必备知识体系
  6. Latex中如何使用中文?
  7. 使用 Docker 来快速上手中文 Stable Diffusion 模型:太乙
  8. 贾扬清:云原生是数据智能的必然
  9. 怎么能免费制作自己的微信小程序?
  10. 3D车道线单目检测方法ONCE-3DLanes