matlab插值比较-griddata/interp2

这篇具有很好参考价值的文章主要介绍了matlab插值比较-griddata/interp2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、matlab插值比较-griddata/interp2

最近在使用matlab插值,发现采用griddata计算速度太慢,正好是网格数据就将计算结果与interp2开展了对比,发现速度差别特别大。

%%
tic
FusioG = griddata(lon,lat,FusioGr,data(:,2),data(:,3));  
toc
disp(['运行时间: ',num2str(toc)]);


时间已过 16.637986 秒。
运行时间: 16.64

tic
FusioG1 = interp2(lon,lat,FusioGr,data(:,2),data(:,3)); 
toc
disp(['运行时间: ',num2str(toc)]);


时间已过 0.085138 秒。
运行时间: 0.085863

plot(FusioG - FusioG1 ,'r.')
A  = FusioG - FusioG1;

rms(A)

ans =

   NaN

mean(A)

ans =

   NaN

max(A)

ans =

    0.6278

 min(A)

ans =

   -0.7366

matlab插值比较-griddata/interp2

两种结果插值成图

通过对比,发现采用interp2插值时运算时间从griddata的16.64秒降为0.085863。

插值rms和mean均为NaN,主要是大部分的节点的值为0.000546720777908405附近,无法计算。

差值max= 0.6278;差值min = -0.7366,表明两者插值还是有些许的不同。插值结果对于总体量31万个点而言可以近似相等。

二维插值与MATLAB实例解析

二维插值-MATLAB_感谢地心引力的博客-CSDN博客_二维插值

百度安全验证   Matlab之插值函数汇总及使用说明

一、插值节点为网格节点
二、插值节点为散乱节点
Addition:
(1)学会查看matlab帮助文档
(2)matlab脚本类型
(3)matlab三维绘图函数
二维插值,简单来说就是节点二维、插值函数二维,形如z = f ( x , y ) z=f(x,y)z=f(x,y)。

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

一、插值节点为网格节点

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

比如这样:
matlab插值比较-griddata/interp2

 MATLAB插值命令:

                                z=interp2(x0​,y0​,z0​,x,y,′method′)

其中:
x0,y0为已知节点,z是对应的值;
x0,y0分别为m维、n维向量,z为m·n矩阵;  
x,y是要插值的节点,z返回对应的插值得到的值;
method是插值方法,和一维插值相同:
'nearest‘: 最近项插值
'linear': 线性插值
'spline': 立方样条插值
'cubic': 立方插值
 

close all
clear,clc

x=100:100:500;  %已知节点数据
y=100:100:400;
z=[636    697    624    478   450  
   698    712    630    478   420
   680    674    598    412   400
   662    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一对比就明白了。使用函数griddata(),常见形式和简要说明如下:

(1) vq = griddata( x,y, v ,xq, yq)
使v=fx,y)形式的曲面与向量(xy.v)中的散点数据拟合。gridata函数在(xq,yq)指定的查询点对曲面进行插值并返回插入的值vq。曲面始终穿过×和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,其中包含查询点的网格坐标。
更多内容请查阅帮助文档。
 

close all
clc, clear

x=[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)

matlab插值比较-griddata/interp2


 文章来源地址https://www.toymoban.com/news/detail-472373.html

到了这里,关于matlab插值比较-griddata/interp2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 19.matlab数据分析插值(matlab程序)

    1. 简述        数据插值的计算机制 数据插值是一种函数逼近的方法。 一维插值 Y1=interp1(X,Y,X1,method) 二维插值 interp2():二维插值函数。 调用格式: Z1=interp2(X,Y,Z,X1,Y1,method) 其中,X、Y是两个向量,表示两个参数的采样点, Z是采样点对应的函数值。X1、 Y1是两个标量或向量,表示

    2024年02月16日
    浏览(35)
  • MATLAB-拉格朗日插值运算

    在结点上给出结点基函数,接着做该基函数的线性组合,组合的系数为结点的函数值,这种插值多项式称为拉格朗日插值公式。通俗地说,就是通过平面上的两个点确定一条直线。该插值方法是一种较为基础的方法,同时该方法也较容易理解与实现。 拉格朗日插值多项式的表

    2024年02月06日
    浏览(43)
  • MATLAB-三维插值运算

    MATLAB中是支持三维及三维以上的高维插值的。三维插值的基本原理与一维插值和二维插值是一样的,但三维插值是对三维函数进行的插值。在MATLAB中,使用interp3函数实现插值,其调用格式如下。 vi= interp3(x,y,z,v,xi,yi,zi) %返回值 vi是三维插值网格(xi,yi,zi)上的函数值估计,其中

    2023年04月10日
    浏览(31)
  • MATLAB-二维线性插值运算

    二维插值在图像处理和数据可视化方面得到了大量的应用,二维插值的基本原理与一维插值一样,但二维插值是对两个变量进行函数的插值。在MATLAB中,主要使用interp2()函数进行二维插值的实现,其调用格式如下, zi =interp2(z,xi,yi) %表示若 z=mxn,则x=1,y=1:m zi = interp2(z, ntimes) % 在

    2024年02月05日
    浏览(37)
  • Matlab的插值与拟合

    插值:在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 拟合:拟合是指已知某函数的若干离散函数值,通过调整该函数中若干

    2024年02月03日
    浏览(30)
  • matlab抽取与插值

    什么是抽取? 我们假设一个数字信号 x ( n ) , n = 1 , 2 , . . . , N x(n),n=1,2,...,N x ( n ) , n = 1 , 2 , ... , N 共有 N N N 个点,抽取就是每个几个点抽1个点,比如2倍抽取,那么抽取后的信号为 y ( n ) , y ( 1 ) = x ( 1 ) , y ( 2 ) = x ( 3 ) , y ( 3 ) = x ( 5 ) , . . . , y ( N / 2 ) = x ( N − 1 ) y(n),y(1)=x(1),y

    2024年01月21日
    浏览(29)
  • 数学建模-插值算法(Matlab)

    注意:代码文件仅供参考,一定不要直接用于自己的数模论文中 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭 如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231   //清风数学建模 简单来说是根据已知点进行线性数据预测,但数据太少需要通过数学方

    2023年04月26日
    浏览(58)
  • matlab使用教程(20)—插值基础

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

    2024年02月11日
    浏览(44)
  • (每日一练)MATLAB二维插值

    在前面介绍了学习MATLAB的一维插值方法,今天来学习MATLAB二维插值方法。         首先来看二维插值函数的使用格式:         其中x , y , z分别是我们给定的三个同维矩阵,x , y , z三者一 一对应构成我们需要的网格数据,x1,y1即是我们要插值点对应的坐标,z1是同维数

    2024年02月11日
    浏览(39)
  • 22matlab数据分析 拉格朗日插值(matlab程序)

    1. 简述        第一部分:问题分析 (1)实验题目:拉格朗日插值算法 具体实验要求:要求学生运用拉格朗日插值算法通过给定的平面上的n个数据点,计算拉格朗日多项式Pn(x)的值,并将其作为实际函数f(x)的估计值。用matlab编写拉格朗日插值算法的代码,要求代码实现用户

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包