大家好,又见面了,我是你们的朋友全栈君。
一.插值
1.1维插值函数
(1)通用接口:
进行1维插值:vq=interp1([x,]v,xq[,method,extrapolation)
#参数说明:
x,v:分别指定样本点的x,y值;x默认为[1,2...length(v)](v为向量)或[1,2...size(v,1)](v为高维数组)
#注意:要求x是单调的
xq:指定查询点(即求该点的插值)
method:指定插值方法;可为'linear'(默认值;分段线性插值)/'nearest'(最近邻点插值)/'next'(下1个邻点插值)/'previous'(上1个邻点插值)/'pchip'(保形分段3次插值)/'cubic'(保形分段3次插值)/'v5cubic'(用于MATLAB5的3次卷积)/'makima'(修正了Akima公式的3次埃尔米特插值)/'spline'(3次样条插值)
#注意:x等距时可使用快速插值,此时指定method为'*linear'等
extrapolation:指定外插策略;可为'extrap'(使用method计算)/标量值(返回该值)/NaN(默认值;返回NaN)
#即当xq落在x外,如何处理
vq:返回插值
#实例:
>> x=[1,2,3,4];
>> v=[1,-1,3,9];
>> interp1(x,v,3.5)
ans =
6
>> v=[1,1,1;-1,-1,-1;3,3,3;9,9,9];
>> interp1(v,3.5)
ans =
6 6 6
(2)3次样条插值:
进行3次样条插值:s=spline(x,y[,xq])
#参数说明:
x,y:分别指定样本点的x,y值
######################################################################################################################
csape()
(3)分段3次埃尔米特插值(保型分段3次插值):
pchip()
(4)分段多项式插值:
mkpp()
2.2维插值
(1)通用接口:
interp2()
二.拟合
1.1元多项式曲线拟合(Polynomial Curve Fitting):
进行1元多项式曲线拟合:[p,S,mu] = polyfit(x,y,n)
#参数说明:
x,y:分别指定数据的x,y值
n:指定多项式的次数
p:返回按降幂排列的多项式系数
S:返回1个结构体,可用作polyval()的输入来获取误差估计值
mu:返回1个二元素向量,mu(1)为mean(x),mu(2)为std(x)
#要求返回mu时,polyfit()会对x进行Z-Score Standarlization,这会改善多项式和拟合算法的数值属性
#实例:
>> polyfit([1,2,3],[1,4,9],1)
ans =
4.0000 -3.3333
>> [p,S,mu]=polyfit([1,2,3],[1,4,9],1)
p =
4.0000 4.6667
S =
包含以下字段的 struct:
R: [2×2 double]
df: 1
normr: 0.8165
mu =
2
1
2.多元线性回归:
进行多元线性回归:[b,bint,r,rint,stats] = regress(y,X[,alpha])
#设多元线性方程为y=b1*x1+b2*x2+...+bn*xn
#参数说明:
y:指定数据点的y坐标;为column array
X:指定数据点的x坐标;为matrix(每列对应1个变量)
#y,X的行数应相等;X(:,1)对应x1,X(:,2)对应x2...;若方程有常数项,应有某列全为1
alpha:指定置信水平;默认为0.05
#将使用100*(1-alpha)%置信水平
b:返回超平面的各个系数构成的向量
#b(1)为b1,b(2)为b2...
bint:返回1个矩阵,其中包含系数估计值的95%置信区间
r:返回由残差组成的向量
rint:返回1个矩阵,其中包含可用于诊断离群值的区间
stats:返回1个向量,其中包含R2统计量/F统计量及其p值,以及误差方差的估计值
#X应包含1个全为1组成的列,以便正确计算模型统计量
3.曲线拟合工具箱(Curve Fitting Toolbox):
>> cftool%见下图
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136219.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...