曲线拟合(转载:http://blog.sina.com.cn/s/blog_8e1548b80101c9iu.html)
补:拟合多项式输出为str
1.poly2str([p],'x')
2.
fn=sprintf('%.16f%s%.16f%s%.16f%s%.16f',p(1),'*x^3+',p(2),'*x^2+',p(3),'*x+',p(4));
vpa(fn,精度)
补2:字符串拼接
1.STR=sprintf('%d%s.....',对应类型的值,对应类型的值);
2.strcat('',''..............)
实例:温度曲线问题
气象部门观测到一天某些时刻的温度变化数据为:
t |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
T |
13 |
15 |
17 |
14 |
16 |
19 |
26 |
24 |
26 |
27 |
29 |
试描绘出温度变化曲线。
曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。
曲线拟合有多种方式,下面是一元函数采用最小二乘法对给定数据进行多项式曲线拟合,最后给出拟合的多项式系数。
1.线性拟合函数:regress()
调用格式: b=regress(y,X)
[b,bint,r,rint,stats]= regress(y,X)
[b,bint,r,rint,stats]= regress(y,X,alpha)
说明:b=regress(y,X)返回X与y的最小二乘拟合值,及线性模型的参数值β、ε。该函数求解线性模型:
y=Xβ+ε
β是p´1的参数向量;ε是服从标准正态分布的随机干扰的n´1的向量;y为n´1的向量;X为n´p矩阵。
bint返回β的95%的置信区间。r中为形状残差,rint中返回每一个残差的95%置信区间。Stats向量包含R2统计量、回归的F值和p值。
例1:设y的值为给定的x的线性函数加服从标准正态分布的随机干扰值得到。即y=10+x+ε ;求线性拟合方程系数。
程序: x=[ones(10,1) (1:10)'];
y=x*[10;1]+normrnd(0,0.1,10,1);
[b,bint]=regress(y,x,0.05)
结果: x =
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
y =
10.9567
11.8334
13.0125
14.0288
14.8854
16.1191
17.1189