利用matlab中的regress回归分析 拟合曲面(得到方程系数)以及残差图
2018-03-01 21:56
816 查看
今天遇到要用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);
% 做出回归曲面,假设我们做一个150x100范围的曲面
m = 150; n =100;
data = ones(m,n);
for i = 1:m
for j = 1:n
data(i,j)= p00 + p10*i + p01*j;
end
end
Z = data;
[X,Y]=meshgrid(1:1:n,1:1:m);
% 可视化
surf(X,Y,Z);
title('拟合出的平面')
xlabel('x'); ylabel('y'); zlabel('z');
legend('为已知点')
figure(2);
rcoplot(r, rint); % 作残差图
title('残差图绘制');
xlabel('数据'); ylabel('残差');回归分析拟合曲面如下图所示:
方程系数在b中:
残差如下图所示:
利用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);
% 做出回归曲面,假设我们做一个150x100范围的曲面
m = 150; n =100;
data = ones(m,n);
for i = 1:m
for j = 1:n
data(i,j)= p00 + p10*i + p01*j;
end
end
Z = data;
[X,Y]=meshgrid(1:1:n,1:1:m);
% 可视化
surf(X,Y,Z);
title('拟合出的平面')
xlabel('x'); ylabel('y'); zlabel('z');
legend('为已知点')
figure(2);
rcoplot(r, rint); % 作残差图
title('残差图绘制');
xlabel('数据'); ylabel('残差');回归分析拟合曲面如下图所示:
方程系数在b中:
残差如下图所示:
相关文章推荐
- matlab 椭圆方程拟合
- 二分法,matlab中利用二分法求解一个多项式方程的近似值。
- matlab 椭圆方程拟合
- 椭球曲面拟合算法实现,matlab/C++
- 利用反射机制得到一个类的方法,变量,以及构造函数
- Matlab曲面拟合和插值
- 利用Matlab求解Laplace方程
- 利用matlab绘制类似拟合、残差图(需手工合并)
- Matlab曲面拟合和插值
- 利用Matlab解方程
- 利用MATLAB求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值
- 【matlab】matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)
- 利用SVD分解求解协方差的特征值以及特征向量--matlab
- Matlab 通过一个方程得到关于某个变量的函数
- Matlab曲面拟合和插值
- matlab曲面拟合工具sftool的使用
- matlab曲线拟合 函数 用法以及例子
- Matlab曲面拟合和插值
- matlab_graythresh()函数利用ostu方法得到的值
- 利用Matlab实现已知数据拟合