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中的hypot()方法使用简介
May 18 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
教你学会使用Python正则表达式
Sep 07 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
python/golang实现循环链表的示例代码
Sep 14 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 GD绘制24小时柱状图
2008/06/28 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
document.all与WEB标准
2020/05/13 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python3实现域名查询和whois查询功能
2018/06/21 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
python爬虫增加访问量的方法
2019/08/22 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
增大python字体的方法步骤
2020/07/05 Python
降低python版本的操作方法
2020/09/11 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Final类有什么特点
2012/04/25 面试题
物业总经理岗位职责
2014/02/28 职场文书
公共场所标语
2014/06/30 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年预算员工作总结
2015/05/14 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书