matlab—回归与内插(完结)

栏目: 编程工具 · 发布时间: 6年前

内容简介:假设当前有一组身高数据,与其对应的有一组体重数据,我们要分析两者之间是否有某种关联,这时就需要用到曲线拟合函数这里介绍两个函数,一个是画散点图的函数

polyfit()

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

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);

matlab—回归与内插(完结)

scatter() & corrcoef()

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

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

matlab—回归与内插(完结)

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;
%interp1sin函数进行分段线性插值,调用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('三次多项式插值')

matlab—回归与内插(完结)

插值不止可以用于平面,还可以用于三维图,函数是 interp2 ,参数及方法类似, zi = interp2(x,y,z,xi,yi,method) ,有需要的可以去Google


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Clean Code

Clean Code

Robert C. Martin / Prentice Hall / 2008-8-11 / USD 49.99

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code......一起来看看 《Clean Code》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具