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 list语法学习(带例子)
Nov 01 Python
python+django快速实现文件上传
Oct 24 Python
python正则表达式re之compile函数解析
Oct 25 Python
Django 外键的使用方法详解
Jul 19 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
Python numpy线性代数用法实例解析
Nov 15 Python
Python中Subprocess的不同函数解析
Dec 10 Python
Python tcp传输代码实例解析
Mar 18 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
python MD5加密的示例
Oct 19 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
使用js判断控件是否获得焦点
2014/01/03 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
js禁止表单重复提交
2017/08/29 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
vue生命周期的探索
2019/04/03 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
Python map和reduce函数用法示例
2015/02/26 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
python实现感知器算法(批处理)
2019/01/18 Python
深入了解Django中间件及其方法
2019/07/26 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
寄语是什么意思
2014/04/10 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
环保宣传语大全
2015/07/13 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技