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写的一个wordpress的采集程序
Feb 27 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
python实现自动化上线脚本的示例
Jul 01 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python变量作用域LEGB用法解析
Feb 04 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
详细分析Python collections工具库
Jul 16 Python
django教程如何自学
Jul 31 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 Python
Python利用folium实现地图可视化
May 23 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
浅谈Python中的闭包
2015/07/08 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
用python做游戏的细节详解
2019/06/25 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
python递归下载文件夹下所有文件
2019/08/31 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
高三学习决心书
2014/03/11 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
二年级学生评语大全
2014/04/23 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
2014年收银工作总结
2014/11/13 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle