polyfit
polyfit函数简介
polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
用法
p = polyfit(x,y,n)
p = polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为 n+1
[p,S] = polyfit(x,y,n)
比上面多返回了结构体S,S可以在polyval中进行误差的计算
字段 | 说明 |
---|---|
R | Vandermonde 矩阵 x 的 QR 分解的三角因子 |
df | 自由度 |
normr | 残缺的范数 |
[p,S,mu] = polyfit(x,y,n)
mu 是一个二元素向量,包含中心化值和定标值。mu(1) 是 mean(x),mu(2) 是 std(x)。使用这些值时,polyfit 将 x 的中心置于零值处并定标为具有单位标准差,可以作为 polyval 的第四个输入以计算 p 在定标点 (x - mu(1))/mu(2) 处的解
简单的例子
利用polyfit和sin(x)函数拟合
x = linspace(0,4*pi,10);
y = sin(x);
%在区间 [0,4*pi] 中沿正弦曲线生成 10 个等间距的点
p = polyfit(x,y,7);
%七次拟合
x1 = linspace(0,4*pi);
y1 = polyval(p,x1);
figure
plot(x,y,'o');
hold on
plot(x1,y1,'r')
%画图
拟合的效果
polyval
polyval简介
主要用于多项式的计算
polyval用法
y = polyval(p,x)
y = polyval(p,x) 返回在 x 处计算的 n 次多项式的值。输入参数 p 是长度为 n+1 的向量,其元素是按要计算的多项式降幂排序的系数。
$p(x) = p_{1}x^{n} + p_{2}x^{n-1} + ... + p_{n}x + p_{n+1}$
y = polyval(p,x,[],mu)
[y,delta] = polyval(p,x,S) 使用 polyfit 生成的可选输出结构体 S 来生成误差估计值 delta。delta 是使用 p(x) 预测 x 处的未来观测值时的误差标准差估计值。如果 p 中的系数是 polyfit 计算的最小二乘估计值,polyfit 数据输入中的误差呈独立正态分布,并拥有常量方差,则 y±delta 至少包含 x 处 50% 的未来观测值。
[y,delta] = polyval(p,x,S)
[y,delta] = polyval(p,x,S,mu)
使用 取代 x。在此方程中, =mean(x) 且 =std(x)。居中和缩放参数 mu = [ , ] 是由 polyfit 计算的可选输出。
polyvalm和polyval基本相似,只不过输入为矩阵,用作矩阵多项式的计算