插值问题
在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值。
实例:海底探测问题
某公司用声纳对海底进行测试,在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. Tab支持的DHTML Window控件

    带有Tab标签支持的DHTML Window控件.它使用cookies来“记忆”窗体大小,位置,哪个Tab选项被选中,window堆叠顺序.​代码下载地址:http://www.huiyi8.com/ ...

  2. C++(五)— 控制保留小数位数

    1.C++中输出指定保留的小数位数. 这里还要注意,每次输出只要设置一次就行了,因为这两个的作用范围是后续对象,而不是仅对后一个对象起作用. #include<iostream> #inc ...

  3. CNN检测模型统计检出率

    X, y = get_feature_charseq() #max_document_length=64 volcab_file = "volcab.pkl" assert os. ...

  4. codeforces 653A A. Bear and Three Balls(水题)

    题目链接: A. Bear and Three Balls time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  5. Convolutional Neural Networks for Visual Recognition 5

    Setting up the data and the model 前面我们介绍了一个神经元的模型,通过一个激励函数将高维的输入域权值的点积转化为一个单一的输出,而神经网络就是将神经元排列到每一层,形 ...

  6. 线段树_区间加乘(洛谷P3373模板)

    题目描述 如题,已知一个数列,你需要进行下面三种操作: 1.将某区间每一个数乘上x 2.将某区间每一个数加上x 3.求出某区间每一个数的和 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字 ...

  7. bzoj 3611: [Heoi2014]大工程 虚树

    题目: 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上. 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 ...

  8. 【LeetCode】033. Search in Rotated Sorted Array

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  9. 安装ORACLE时在Linux上设置内核参数的含义

    前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...

  10. bzoj 4066 & bzoj 2683 简单题 —— K-D树(含重构)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 https://www.lydsy.com/JudgeOnline/problem.p ...