matlab三维数值插值,[转载]MATLAB三维插值与拟合
插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。在matlab中都有特定的函数来完成这些功能。这两种方法的确别在于:当测量值是准确的,没有误差时,一般用插值;当测量值与真实值有误差时,一般用数据拟合。
插值:
对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method)
,其中method包括nearst,linear,spline,cubic。
对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。
拟合:
对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。
对于二维曲面的拟合,有很多方法可以实现,但是我这里自己用的是Spline
Toolbox里面的函数功能。具体使用方法可以看后面的例子。
原始数据
x=[1:1:15];
y=[1:1:5];
z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25
0.29;
0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;
0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;
0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;
0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];
z是一个5乘12的矩阵。
直接用原始数据画图如下:
surf(x,y,z)
title(’Original data Plot’);
xlabel(’X'), ylabel(’Y'), zlabel(’Z'),
colormap, colorbar;
axis([0 15 0 6 0.15 0.55]);
先考虑插值,需要用到的函数interp2
x1=1:0.2:12;
y1=1:0.2:5;
[x2,y2]=meshgrid(x1,y1);
t11=interp2(x,y,z,x2,y2,’cubic’);
surf(x1,y1,t11)
title(’After Fit data Plot’);
xlabel(’X'), ylabel(’Y'), zlabel(’Z'),
colormap, colorbar;
然后考虑拟合
ky = 3; knotsy = augknt([0:2.5:13],ky);
sp = spap2(knotsy,ky,y,z);
yy = 0:.5:12; vals = fnval(sp,yy);
coefsy = fnbrk(sp,’c');
kx = 5; knotsx = augknt([1:4:5],kx);
sp2 = spap2(knotsx,kx,x,coefsy.’);
coefs = fnbrk(sp2,’c').’;
xv = 1:.25:5; yv = 1:.5:12;
values =
spcol(knotsx,kx,xv)*coefs*spcol(knotsy,ky,yv).’;
surf(yv,xv,values)
title(’After Polynal data Plot’);
xlabel(’X'), ylabel(’Y'), zlabel(’Z');
colormap, colorbar;
axis([0 15 0 6 0.2 0.55]);
效果从上面三个图上面已经看出来了。基本上满足了现在画图的要求,如果测量值比较精确,我们选择第二种方法插值法来画图,如果觉得测量值不是很精确需要用拟合的方法的话,那当然用第三种方法了。关于Spline
Toolbox当然还有更多应用,还有就是里面参数设置为什么要这样设,该怎样设要写下来估计再写一整页都写不完,所以还是大家感兴趣的自己去看帮助文档好了,里面有详细介绍。
matlab三维数值插值,[转载]MATLAB三维插值与拟合相关推荐
- matlab点坐标 一次插值,[转载]坐标转换和插值之matlab程序
坐标转换和插值之matlab程序 Matlab版本:8.1.0.604 (R2013a) 这里需要用到的命令有:maps, defaultm, projfwd, projinv Matlab版本:8. ...
- matlab中griddata函数,[转载]matlab中griddata函数应用示例
知道一系列点的坐标如下(1.486,3.059,0.1);(2.121,4.041,0.1);(2.570,3.959,0.1);(3.439,4.396,0.1);(4.505,3.012,0.1) ...
- matlab内存管理工具,[转载]MATLAB内存管理
今天用Matlab跑程序,由于数据量太大,又出现 Out of memory. Type HELP MEMORY for your options.的问题.看到这篇文章非常实用,转过来方便查阅~ 用 ...
- matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)
本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影.仿射.投影.多项式.分段线性.局部加权平均配准的过程. 实验平台 X86 PC,Windo ...
- matlab根据数值画等高线,关于matlab画等高线图
关于matlab画等高线图 求助,急就是本人有一大串数据先用插值法画出空间的山体图,然后再画等高线图,我就只要高度为1,2,3,4,5的等高线图,但是插值法弄出来的区间并不是[1,5],用contou ...
- matlab中ode指令,[转载]MATLAB中ODE的使用
ode23 解非刚性微分方程,低精度,使用Runge-Kutta法的二三阶算法.ode45 解非刚性微分方程,中等精度,使用Runge-Kutta法的四五阶算法.ode113 解非刚性微分方程,变精度 ...
- matlab imagesc参数设置,[转载]matlab 中imagesc的用法
imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色 imagesc(x,y,A) x,y决定坐标范围,x,y应是两个二维向量,即x=[x1 x2],y= ...
- matlab保存数据save,[转载]matlab中save,load使用方法
功能描述]存储文件 [软件界面]MATLAB->File->Save Workspace As将变量存入硬盘中指定路径. [函数用法] save:该函数将所有workspace中变量用二进 ...
- matlab堆栈的思想,[转载]Matlab源代码:堆栈类Stack的实现
Matlab源代码:堆栈类Stack的实现 -- by benbenknight 自己编写了一个堆栈类Stack,供大家分享. 类的成员函数清单如下: Stack STACK 堆栈对象Stack的构造 ...
最新文章
- Extmail配置实践(一)
- MyBatisPlus中进行通用CRUD全局策略配置
- 关于SP一些响应码的API返回码及解析集合
- 【HDOJ】4541 Ten Googol
- 怎么查mac电脑是不是正品_mac新手必看教程—苹果Mac电脑怎么录屏?
- flutter 微信语言选择_flutter实战项目,教你使用flutter打造微信app页面!
- Flume-概述-安装
- js获取el表达式的值_Vue.js
- 高效使用电脑,Fence和Direct Folder
- MyBatis创建视图
- 使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框
- imx6 android 最新,【iMX6Q-Android6.0】---移植 iMX6Q android6.0 源码 史上最详细
- mmdetection自定义模型
- 微博情感分析 mysql_利用500万条微博语料对微博评论进行情感分析
- 计算机怎么把单元格内容水平居中,win10系统下怎样让Word中的表格内容居中
- 加州大学洛杉矶计算机排名,加州大学洛杉矶分校计算机科学硕士排名第14(2020年TFE Times排名)...
- 基于STM32的AD9854模块调试总结
- 在线文档 - Google drive
- Echarts绘制Tree树图的涟漪效果effectScatter
- laydate-v5.0.9自定义小时范围和分钟间隔(半小时)