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运算符重载详解及实例代码
Mar 07 Python
python实现神经网络感知器算法
Dec 20 Python
Python中偏函数用法示例
Jun 07 Python
tensorflow 获取变量&amp;打印权值的实例讲解
Jun 14 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
python设置代理和添加镜像源的方法
Feb 14 Python
使用python采集Excel表中某一格数据
May 14 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
python实现的web监控系统
Apr 27 Python
Django rest framework如何自定义用户表
Jun 09 Python
Python中npy和mat文件的保存与读取
Apr 24 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
php数字游戏 计算24算法
2012/06/10 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JS实现div居中示例
2014/04/17 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
python抓取网页内容示例分享
2014/02/24 Python
跟老齐学Python之模块的加载
2014/10/24 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
门卫班长岗位职责
2013/12/15 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
企业文化建设实施方案
2014/03/22 职场文书
行风评议整改报告
2014/11/06 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
国庆阅兵观后感
2015/06/15 职场文书
心得体会格式及范文
2016/01/25 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android