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翻译软件实现代码(使用google api完成)
Nov 26 Python
python定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python编程之属性和方法实例详解
May 19 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
浅析python协程相关概念
Jan 20 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
python制作填词游戏步骤详解
May 05 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
python——全排列数的生成方式
Feb 26 Python
Python如何输出警告信息
Jul 30 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP中header用法小结
2016/05/23 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
numpy排序与集合运算用法示例
2017/12/15 Python
Django框架models使用group by详解
2020/03/11 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
中国梦演讲稿3分钟
2014/08/19 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
中秋节主题班会
2015/08/14 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
Fluentd搭建日志收集服务
2022/09/23 Servers