插值问题
在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值。
实例:海底探测问题
某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些有限的数据了解更多处的海底情况。并绘出较细致的海底曲面图。
一、一元插值
一元插值是对一元数据点(xi,yi)进行插值。
1.  线性插值:由已知数据点连成一条折线,认为相临两个数据点之间的函数值就在这两点之间的连线上。一般来说,数据点数越多,线性插值就越精确。
调用格式:yi=interp1(x,y,xi,’linear’)  %线性插值
zi=interp1(x,y,xi,’spline’)  %三次样条插值
wi=interp1(x,y,xi,’cubic’)  %三次多项式插值
说明:yi、zi、wi为对应xi的不同类型的插值。x、y为已知数据点。
例1:已知数据:
x 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1
y .3 .5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2
求当xi=0.25时的yi的值。
程序:
x=0:.1:1;
y=[.3 .5 1 1.4 1.6 1 .6 .4 .8 1.5 2];
yi0=interp1(x,y,0.025,'linear')
xi=0:.02:1;
yi=interp1(x,y,xi,'linear');
zi=interp1(x,y,xi,'spline');
wi=interp1(x,y,xi,'cubic');
plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-')
legend('原始点','线性点','三次样条','三次多项式')
结果:yi0 =  0.3500

要得到给定的几个点的对应函数值,可用:
xi =[ 0.2500  0.3500  0.4500]
yi=interp1(x,y,xi,'spline')
结果:
yi =1.2088  1.5802  1.3454
(二) 二元插值
二元插值与一元插值的基本思想一致,对原始数据点(x,y,z)构造见世面函数求出插值点数据(xi,yi,zi)。
一、单调节点插值函数,即x,y向量是单调的。
调用格式1:zi=interp2(x,y,z,xi,yi,’linear’)
‘liner’ 是双线性插值 (缺省)
调用格式2:zi=interp2(x,y,z,xi,yi,’nearest’)
’nearest’ 是最近邻域插值
调用格式3:zi=interp2(x,y,z,xi,yi,’spline’)
‘spline’是三次样条插值
说明:这里x和y是两个独立的向量,它们必须是单调的。z是矩阵,是由x和y确定的点上的值。z和x,y之间的关系是z(i,:)=f(x,y(i)) z(:,j)=f(x(j),y) 即:当x变化时,z的第i行与y的第i个元素相关,当y变化时z的第j列与x的第j个元素相关。如果没有对x,y赋值,则默认x=1:n, y=1:m。n和m分别是矩阵z的行数和列数。
例2:已知某处山区地形选点测量坐标数据为:
x=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5
y=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5  5.5  6
海拔高度数据为:
z=89 90 87 85 92 91 96 93 90 87 82
   92 96 98 99 95 91 89 86 84 82 84
   96 98 95 92 90 88 85 84 83 81 85
   80 81 82 89 95 96 93 92 89 86 86
   82 85 87 98 99 96 97 88 85 82 83
   82 85 89 94 95 93 92 91 86 84 88
   88 92 93 94 95 89 87 86 83 81 92
   92 96 97 98 96 93 95 84 82 81 84
   85 85 81 82 80 80 81 85 90 93 95
   84 86 81 98 99 98 97 96 95 84 87
   80 81 85 82 83 84 87 90 95 86 88
   80 82 81 84 85 86 83 82 81 80 82
   87 88 89 98 99 97 96 98 94 92 87
其地貌图为:

对数据插值加密形成地貌图。
程序:
x=0:.5:5;
y=0:.5:6;
z=[89 90 87 85 92 91 96 93 90 87 82
   92 96 98 99 95 91 89 86 84 82 84
   96 98 95 92 90 88 85 84 83 81 85
   80 81 82 89 95 96 93 92 89 86 86
   82 85 87 98 99 96 97 88 85 82 83
   82 85 89 94 95 93 92 91 86 84 88
   88 92 93 94 95 89 87 86 83 81 92
   92 96 97 98 96 93 95 84 82 81 84
   85 85 81 82 80 80 81 85 90 93 95
   84 86 81 98 99 98 97 96 95 84 87
   80 81 85 82 83 84 87 90 95 86 88
   80 82 81 84 85 86 83 82 81 80 82
   87 88 89 98 99 97 96 98 94 92 87];
mesh(x,y,z)  %绘原始数据图
xi=linspace(0,5,50);  %加密横坐标数据到50个
yi=linspace(0,6,80);  %加密纵坐标数据到60个
[xii,yii]=meshgrid(xi,yi);  %生成网格数据
zii=interp2(x,y,z,xii,yii,'cubic');  %插值
mesh(xii,yii,zii)  %加密后的地貌图
hold on     % 保持图形
[xx,yy]=meshgrid(x,y);  %生成网格数据
plot3(xx,yy,z+0.1,'ob')  %原始数据用‘O’绘出

2、二元非等距插值
调用格式:zi=griddata(x,y,z,xi,yi,’指定插值方法’)
插值方法有: linear          % 线性插值   (默认)
             bilinear     % 双线性插值
             cubic        % 三次插值
             bicubic      % 双三次插值
             nearest      % 最近邻域插值
例:用随机数据生成地貌图再进行插值
程序:
x=rand(100,1)*4-2;
y=rand(100,1)*4-2;
z=x.*exp(-x.^2-y.^2);
ti=-2:.25:2;
[xi,yi]=meshgrid(ti,ti); % 加密数据
zi=griddata(x,y,z,xi,yi);% 线性插值
mesh(xi,yi,zi)
hold on
plot3(x,y,z,'o')

拟合

简单多项式拟合

x=[0,1,2,3,4,5,7,8,9,10]

y=[0.3 ,0.5, 1, 1.4, 1.6, 1.6, 1.4, 1.8, 1.5, 2];

aa=polyfit(x,y,2);%2的位置表示函数的最高系数,aa是函数方程

a=aa(1)%第一个参数

b=aa(2)%第二个参数

c=aa(3)%第三个参数

y=polyval(aa,x);%根据函数方程获取的到y值

plot(x,y,'r');%r获取的是直线,k+获取的是点,应该使用拟合后的直线画图

MATLAB实现插值和拟合的更多相关文章

  1. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  2. Matlab随笔之插值与拟合(下)

    原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...

  3. matlab——插值与拟合

    @ 目录 前言 一.拟合 1.定义 2.三种判别准则 3.最小二乘法 (1)一般形式 (2)常用函数 (3)matlab实现 二.插值 1.定义 2.方法 (1)分段线性插值 (2)拉格朗日插值多项式 ...

  4. matlab学习——05插值和拟合(黄河小浪底调水调沙问题)

    05插值和拟合 黄河小浪底调水调沙问题 data3.txt 1800 1900 2100 2200 2300 2400 2500 2600 2650 2700 2720 2650 32 60 75 8 ...

  5. matlab学习——05插值和拟合(一维二维插值,拟合)

    05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...

  6. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  7. MATLAB之数据处理+公式拟合

    MATLAB之数据处理+公式拟合 前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式. 试验数据背景 本次试验有三个自变量:V.M.G,因变量为F,每组试验重复 ...

  8. Python SciPy库——插值与拟合

    插值与拟合 原文链接:https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 # -*- coding: utf-8 -*- import numpy a ...

  9. MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)

    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在MATLAB中“fitgmdis ...

随机推荐

  1. 洛谷p3369 treap

    这是一个treap裸题,还可以用splay,替罪羊树,线段树等等写 treap是树和堆结合,可以方便的在O(log(n))期望时间内进行以下操作,因此treap又叫做名次树 插入x数 删除x数(若有多 ...

  2. node.js定时任务:node-schedule的使用

    安装 npm install node-schedule 使用方法 1:确定时间 例如:2014年2月14日,15:40执行 var schedule = require("node-sch ...

  3. python 正则表达式(二)

    下面列举了Python3的所有符号用法,别背,千万别背,用到时来查就行. 字符 含义 . 表示匹配除了换行符外的任何字符注:通过设置 re.DOTALL 标志可以使 . 匹配任何字符(包含换行符) | ...

  4. string 中的 length函数 和size函数 返回值问题

    string 中的 length函数 和 size函数 的返回值  (  还有 char [ ] 中 测量字符串的  strlen 函数 ) 应该是 unsigned int 类型的 不可以 和 -1 ...

  5. Mybatis中collection与association的区别

    association是多对一的关系 collection是一个一对多的关系

  6. Appium-关于appium的原生控件的 xpath 定位问题及常用方法

    最近遇到的项目,发现很多元素,都没有标明id.text.content-desc,classname中又有很多是相同,导致无法定位 第一,appium1.5及之后的版本废弃了name属性(如name= ...

  7. (转)gcov、lcov与genhtml 使用心得

    gcc是linux平台下的C.C++ 编译器 gcov是配合gcc产生覆盖信息报告的工具: lcov是将gcov产生的报告信息,以更直观的方式显示出来工具 基本的使用方法分为4个阶段: (一).gcc ...

  8. Activity间数据传输

    当对Android有一些了解后,不难发现,Android程序UI框架接近于Web页面的概念.每一个用于呈现页面的组件,Activity,都是彼此独立的,它们通过系统核心来调度整合,彼此之间的通过Int ...

  9. php实现多文件上传和下载。

    http://1229363.blog.163.com/blog/static/19743427200751291055264/

  10. Web视频播放 之 【HTML5 Video标签】

    一.说明 HTML5中引入了video标签用于方便的在浏览器中播放视频,不在需要对flashPlayer进行依赖,更加轻量级.但在浏览器兼容.视频协议支持方面还有一些需要注意的问题. 二.浏览器兼容 ...