matlab中二维插值函数interp2的使用详解


Posted in Python onApril 22, 2020

下面是一段产生log-normal分布的代码,以此进行说明。

clear all;
clc;
for t=1:100
 Traffic(t) =curve(t);
end
MaxTraffic = max(Traffic);
w = 0.2;
Wmax = 2*pi*w/3000;
x=[0:10:300];
y=[0:10:300];
Nx=length(x);
Ny=length(y);
Sigma = 0.53;
t = 0;
M = 10*curve(t)/MaxTraffic;
sum = 0;
for i=1:Nx
 forj=1:Ny
  Mu = log(M)-0.5*Sigma^2;
  Rho(i,j) = RhoFromCoordination(x(i),y(j),Wmax,Sigma,Mu);
  Lognrnd(i,j) = round(exp(Sigma*Rho(i,j)+Mu));
  sum = Lognrnd(i,j)+sum;
 end
end
sum
[xi,yi]=meshgrid(0:2:300,0:2:300);
z1=interp2(x,y,Lognrnd,xi,yi,'spline');%三次样条插值
surf(xi,yi,z1)

(1)首先理解meshgrid的原理和用法。简单地说,就是产生Oxy平面的网格坐标。

在进行3-D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x,y)。例如,要在“3<=x<=5,6<=y<=9,z不限制区间”这个区域内绘制一个3-D图形,如果只需要整数坐标为采样点的话。

我们可能需要下面这样一个坐标构成的矩阵:

(3,9),(4,9),(5,9);

(3,8),(4,8),(5,8);

(3,7),(4,7),(5,7);

(3,6),(4,6),(5,6);

在matlab中我们可以这样描述这个坐标矩阵

把各个点的x坐标独立出来,得:

3,4,5;

3,4,5;

3,4,5;

3,4,5;

再把各个点的y坐标也独立出来:

9,9,9;

8,8,8;

7,7,7;

6,6,6;

这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x,y)计算获得z,并绘制出三维图形。

(2)理解interp2的参数含义和用法,如ZI= interp2(X,Y,Z,XI,YI,'spline')

A、返回矩阵ZI,ZI的元素包含对应于参量XI与YI(可以是向量、或同型矩阵)的元素, 即ZI(i,j)←(XI(i),YI(j))

B、用户可以输入行向量和列向量XI与YI。

C、若XI与YI中有在X与Y范围之外的点,则相应地返回nan(Not a Number)。

D、用指定的算法method计算二维插值:

'linear' :双线性插值算法(缺省算法);
'nearest' :最临近插值;
'spline' :三次样条插值;
'cubic' :双三次插值。

E、如以下的运用:

[xi,yi] = meshgrid(0:2:300,0:2:300);
ZI = interp2(x,y,Lognrnd,xi,yi,'spline');%三次样条插值
surf(xi,yi,ZI)%这里已经不再是(x,y),而是(xi,yi)。

(3)上述的代码效果

插值前:

matlab中二维插值函数interp2的使用详解

插值后:

matlab中二维插值函数interp2的使用详解

补充知识:Matlab 二维插值,求面积

matlab中二维插值函数interp2的使用详解

matlab中二维插值函数interp2的使用详解

先将表中数据复制到EXCEL中,再导入到MATLAB中

这里只做了前两问,第三位实在不会,等学会了再补

第二问本来想着用差分求出来导数,再用面积公式,结果发现连z=f(x,y)我都不会表示。。。。。。

直接用的海伦公式,每一个方块内分成两个三角形,分开求面积

x=0:100:1200;
y=0:100:1000;
[x y]=meshgrid(x,y);
z=mydata1;
x1=0:10:1200;
y1=0:10:1000;
[x1 y1]=meshgrid(x1,y1);
z1=interp2(x,y,z,x1,y1)
surf(x1,y1,z1)
shading flat
square=0;
[r c]=size(z1)
for n=1:c-1
 for m=1:r-1
  a=x1(m,n+1)-x1(m,n);
  b=y1(m+1,n)-y1(m,n);
  temp=z1(m+1,n+1)-z1(m,n);
  c=sqrt(a*a+b*b+temp*temp);
  temp=z1(m,n+1)-z1(m,n);
  a1=sqrt(temp*temp+a*a);
  temp=z1(m+1,n+1)-z1(m,n+1);
  b1=sqrt(temp*temp+b*b);
  p=(a1+b1+c)/2;
  square=square+sqrt(p*(p-a1)*(p-b1)*(p-c));
  temp=z1(m+1,n)-z1(m,n);
  b2=sqrt(b*b+temp*temp);
  temp=z1(m+1,n+1)-z1(m+1,n);
  a2=sqrt(temp*temp+a*a);
  p=(a2+b2+c)/2;
  square=square+sqrt(p*(p-a2)*(p-b2)*(p-c));
 end
end
square

square =

1.2210e+06

matlab中二维插值函数interp2的使用详解

以上这篇matlab中二维插值函数interp2的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
Python实现将xml导入至excel
Nov 20 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
Python箱型图处理离群点的例子
Dec 09 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python requests接口测试实现代码
Sep 08 Python
Python pickle模块常用方法代码实例
Oct 10 Python
python 一维二维插值实例
Apr 22 #Python
Numpy一维线性插值函数的用法
Apr 22 #Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 #Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 #Python
Jupyter Notebook折叠输出的内容实例
Apr 22 #Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 #Python
django使用JWT保存用户登录信息
Apr 22 #Python
You might like
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
java字符串格式化输出实例讲解
2021/01/06 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
如何开发一个JQuery插件
2016/07/28 面试题
市场部规章制度
2014/01/24 职场文书
学校万圣节活动方案
2014/02/13 职场文书
食品安全演讲稿
2014/09/01 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Python函数中apply、map、applymap的区别
2021/11/27 Python
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏