内容简介:假设当前有一组身高数据,与其对应的有一组体重数据,我们要分析两者之间是否有某种关联,这时就需要用到曲线拟合函数这里介绍两个函数,一个是画散点图的函数
polyfit()
假设当前有一组身高数据,与其对应的有一组体重数据,我们要分析两者之间是否有某种关联,这时就需要用到曲线拟合函数 polyfit ,其调用格式为: fit=polyfit(xdata,ydata,n) ,其中 n 表示多项式的最高阶数, xdata , ydata 为将要拟合的数据,输出的参数 fit 为 n+1 个系数,一般情况 polyfit 与 polyval 一起使用,进行绘图
x = [-1.2 -0.5 0.3 0.9 1.0 2.6 3.0 3.5]; y = [-15.6 -8.5 2.2 4.5 6.6 8.2 8.9 10.0]; fit = polyfit(x,y,7); xfit = x(1):0.1:x(end); yfit = polyval(fit,xfit); plot(x,y,'ro',xfit,yfit);
scatter() & 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 的相关系数,必定相等
x = [-1.2 -0.5 0.3 0.9 1.0 2.6 3.0 3.5]; y = [-15.6 -8.5 2.2 4.5 6.6 8.2 8.9 10.0]; scatter(x,y); corrcoef(x,y)
regress()
Regress 函数的作用也是做数据拟合,只不过它所呈现的信息更多,其调用格式为: [b,bint,r,rint,stats] = regress(y,x,alpha)
- y:多元拟合的变量值的向量
- x 多元拟合的自变量的值的矩阵
- alpha:显著性水平,缺省的时候为 0.05
- b:回归得到的自变量系数
- bint:b 的 95% 的置信区间矩阵
- r:残差向量
- rint:区间矩阵
插值
拟合与插值不同的地方在于,拟合出的函数曲线不一定会经过所有的点,只能说大概呈现一个趋势,而插值一定会经过所有的数据点
插值的作用:比如我们已知 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 函数替代 |
Nearest Spline Cubic
x = 0 : 2 * pi;
y = sin(x);
xx = 0 : 0.5 : 2 * pi;
%interp1对sin函数进行分段线性插值,调用interp1的时候,默认的是分段线性插值
y1 = interp1(x,y,xx);
subplot(2,2,1);plot(x,y,'o',xx,y1,'r');
title('分段线性插值')
%临近插值
y2 = interp1(x,y,xx,'nearnest');
subplot(2,2,2);plot(x,y,'o',xx,y2,'r');
title('邻近插值')
%球面线性插值
y3 = interp1(x,y,xx,'spline');
subplot(2,2,3);plot(x,y,'o',xx,y3,'r');
title('球面线性插值')
%三次多项式插值
y4 = interp1(x,y,xx,'PCHIP');
subplot(2,2,4);plot(x,y,'o',xx,y4,'r');
title('三次多项式插值')
插值不止可以用于平面,还可以用于三维图,函数是 interp2 ,参数及方法类似, zi = interp2(x,y,z,xi,yi,method) ,有需要的可以去Google
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Flutter 布局控件完结篇
- Laravel核心解读--完结篇
- 微信小程序教程04:API(完结)
- ES6 —项目综合实战(完结篇)
- 如何建立有效的 API 安全策略(完结篇)
- 已完结 | 如何高级地对抗恶意程序的糖衣炮弹?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Automate This
Christopher Steiner / Portfolio / 2013-8-9 / USD 25.95
"The rousing story of the last gasp of human agency and how today's best and brightest minds are endeavoring to put an end to it." It used to be that to diagnose an illness, interpret legal docume......一起来看看 《Automate This》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
MD5 加密
MD5 加密工具