matlab—回归与内插(完结)

十七、拟合(回归)与内插

17.1 polyfit()

    假设当前有一组身高数据,与其对应的有一组体重数据,我们要分析两者之间是否有某种关联,这时就需要用到曲线拟合函数polyfit,其调用格式为:fit = polyfit(xdata,ydata,n),其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,输出的参数fit为n+1个系数,一般情况polyfit与polyval一起使用,进行绘图

    示例:

图17-1 polyfit函数

17.2 scatter() and corrcoef()

    这里我们要介绍两个函数,一个是画散点图的函数scatter,其调用格式为:scatter(xdata,ydata)

    另一个是求出x-y之间线性系数大小的函数corrcoef,其调用格式为:corrcoef(xdata,ydata),这里要说明一点,corrcoef函数返回的是一个2*2的矩阵,(1,1)和(2,2)分别是x-x和y-y的相关系数,必定是1,(1,2)和(2,1)分别是x-y和y-x的相关系数,必定相等

    示例:

图17-2 corrcoef and scatter

17.3 regress()

    Regress函数的作用也是做数据拟合,只不过它所呈现的信息更多,其调用格式为:[b,bint,r,rint,stats] = regress(y,x,alpha)

    参数说明:

    y 多元拟合的变量值的向量

    x 多元拟合的自变量的值的矩阵

    alpha 显著性水平,缺省的时候为0.05

    b 回归得到的自变量系数

    bint b的95%的置信区间矩阵

    r 残差向量

    rint 区间矩阵

17.4 插值

    拟合与插值是数学建模中常用的两种数据分析的方法,前三节我们讲的内容全部都是关于拟合的,下面我们要讲的是插值。拟合与插值不同的地方在于,拟合出的函数曲线不一定会经过所有的点,只能说大概呈现一个趋势,而插值一定会经过所有的数据点

    那么插值的作用是什么呢,我们知道拟合的作用是呈现趋势,插值的作用:比如我们已知t=1时,a=2,t=2时,a=3,那么t=1.5时,a=多少呢?所以插值就是帮助我们求某处的数据值

    其调用格式为:yi=interp1(x,y,xi),其中,x,y是我们已知的数据值,我们现在要求,经过一系列(x,y)点的曲线在xi时对应的yi值

语法形式

说明

y=interp1(x,Y,xi)

由已知点集(x,Y)插值计算xi上的函数值

y=interp1(x,Y,xi)

相当于x=1:length(Y)的interp(x,Y,xi)

y=interp1(x,Y,xi,method)

用指定插值方法计算插值点xi上的函数值

y=interp1(x,Y,xi,method,’extrap’)

对xi中超出已知点集的插值点用指定插值方法计算函数值

y=interp1(x,Y,xi,method,’extrap’,extrapval)

用指定方法插值xi上的函数值,超出已知点集处函数值取extrapval

y=interp1(x,Y,xi,method,’pp’)

用指定方法插值,但返回结果为分段多项式

Method

方法描述

Nearest

最邻近插值:插值点处函数值与插值点最邻近的已知点函数值相等

liner

分段线性插值:插值点处函数值由连接其最邻近的两侧点的线性函数预测。Matlab中interp1的默认方法

spline

样条插值:默认为三次样条插值。可用spline函数替代

pchip

三次Hermite多项式插值,可用pchip函数替代

(1)Nearest方法速度最快,占用内存最小,但一般来说误差最大,插值结果最不光滑

(2)Spline三次样条插值是所有插值方法中运行耗时最长的,插值函数及其一二阶导函数都连续,是最光滑的插值方法。占用内存比cubic方法小,但是已知数据分布不均匀的时候可能出现异常结果

(3)Cubic三次多项式插值法中,插值函数及其一阶导数都是连续的,所以插值结果比较光滑,速度比Spline快,但是占用内存最多

    示例:

图17-3 插值

    当然,插值不止可以用于平面中,还可以用于三维图中,函数是interp2,参数及方法类似,zi = interp2(x,y,z,xi,yi,method),读者下去练习即可

十八、作者结语

    matlab系列文章已全部更完,如有任何错误或者建议欢迎指出,同时欢迎各位读者加入博客交流群689696631。最后,如果你是看了我的系列文章准备参加美赛,祝你取得好成绩

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏TensorFlow从0到N

讨厌算法的程序员 1 - 插入排序

什么是算法 在说插入排序之前,我们了解下《算法导论》对算法的从两种不同角度的定义。 一般性解释: 算法是定义良好的计算过程,它取一个或一组值作为输入,并产生...

3204
来自专栏我和未来有约会

[Silverlight动画]转向行为 - 2D向量

转向行为已经被各种语言实现过多次了,其最底层是用向量来描述的(也是最常见的实现方式)。 概括的看,一个向量由两部分组成:一个方向和一个大小。比如,一个运动中对象...

1786
来自专栏云时之间

NLP入门之形式语言与自动机学习(三)

在前边的文章中我们把简单的需要的基础知识简单的列举了一遍,包括简单的集合逻辑,还有图论以及一些的证明方法等等,接下来我们将要开始我们正式的关于形式语言的学习,所...

4238
来自专栏AzMark

贝斯狸的 Python 之旅 -- 深入切片操作及原理

我首先通过 input() 函数,接收了外部输入字符串,然后通过 list 函数的切片,实现了回文数,代码真的好简洁,我自己都佩服我自己,我也不知道小组长会问...

693
来自专栏人工智能LeadAI

讨厌算法的程序员 2 | 证明算法的正确性

第1篇介绍了插入排序算法,这里要提出一个问题:学习算法仅仅是积累一个又一个的算法实现吗? 当然不是。比算法本身更重要也更基础的,是对算法的分析:能够证明其正确性...

3355
来自专栏人工智能LeadAI

讨厌算法的程序员 1 | 插入排序

什么是算法 在说插入排序之前,我们了解下《算法导论》对算法的从两种不同角度的定义。 一般性解释: 算法是定义良好的计算过程,它取一个或一组值作为输入,并产生出一...

2777
来自专栏灯塔大数据

每周学点大数据 | No.20序列有序的判定

No.19期 序列有序的判定0 数组的判 Mr. 王:这里我们再讲一个亚线性时间的判定问题——数组有序的判定问题。你来说一下问题定义,并想一想这个问题...

2675
来自专栏mathor

BFPRT算法

 首先将原数组分成5个一组,每组内进行排序,组间不排序,然后将每组的中位数取出再次进行上述操作,直到最后只能分成一组了,然后取出中位数,将这个中位数当作标尺进行...

632
来自专栏TensorFlow从0到N

讨厌算法的程序员 2 - 证明算法的正确性

第1篇介绍了插入排序算法,这里要提出一个问题:学习算法仅仅是积累一个又一个的算法实现吗? 当然不是。比算法本身更重要也更基础的,是对算法的分析:能够证明其正确...

2805
来自专栏向治洪

数据结构之2-3-4树

2-3-4树是一种阶为4的B树。它是一种自平衡的数据结构,可以在O(lgn)的时间内查找、插入和删除,这里的n是树中元素的数目。2-3-4树和红黑树是等价的,也...

1809

扫码关注云+社区