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 相关文章推荐
tensorflow训练中出现nan问题的解决
Feb 10 Python
Python实现通讯录功能
Feb 22 Python
pandas 将索引值相加的方法
Nov 15 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
基于python操作ES实例详解
Nov 16 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
Python 使用type来定义类的实现
Nov 19 Python
使用Django清空数据库并重新生成
Apr 03 Python
Python使用re模块验证危险字符
May 21 Python
python如何调用java类
Jul 05 Python
python定义具名元组实例操作
Feb 28 Python
Django中session进行权限管理的使用
Jul 09 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
基于mysql的bbs设计(一)
2006/10/09 PHP
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python实现单向链表详解
2018/02/08 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
党校自我鉴定范文
2013/10/02 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
高中校园广播稿
2014/10/21 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
专项资金申请报告
2015/05/15 职场文书
单位病假条范文
2015/08/17 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python