今天遇到要用matlab拟合曲面。至少要三个点才能确定个面。两个点的话,有多个面。
利用matlab中的regress回归分析拟合曲面(得到方程系数)以及残差图。
matlab代码如下:
% 示例数据,随便编的
a1 = 76 ;b1 = 72 ;
a2 = 59 ;b2 = 113;
a3 = 48 ;b3 = 63 ;
a4 = 66 ;b4 = 158;
a5 = 92 ;b5 = 166;
z0 = 20;
% 注意要求列向量
x = [a1, a2, a3, a4]'; % [76;59;48;66]
y = [b1, b2, b3, b4]'; % [72;113;63;158]
z = [z0-0.1, z0, z0-0.2, z0+0.1]'; % [19.90;20;19.80;20.10]
k = length(x); % 返回样本总数
X=[ones(k,1) x y]; % 这里有n个数据就填ones(n,1)
% X: [1,76,72;1,59,113;1,48,63;1,66,158]
% 调用回归函数求模型参数
[b, bint, r, rint, stats] = regress(z,X);
% 得到参数b的95%置信区间bint,
% 残差r以及残差95%置信区间rint,
% stats有三个分量的向量,分别是决定系数R平方、F值以及回归的p值。
% 画出已知点的图
figure(1)
scatter3(x, y, z, '*');
hold on
% 回归结果b:[19.5255;0.0024;0.0027],即z = 19.5255 + 0.0024*x + 0.0027*y
p00=b(1);
p10=b(2);
p01=b(3);
% 做出回归