最小二乘曲面拟合

%可用样条曲面拟合,最好对原数据整理一下,拟合的代码如下:

x0=2.2:0.1:7;y0=10:5:30;

z0 =[ 0.0121 0.0118 0.0129 0.1098 0.0103

0.0116 0.0116 0.0124 0.1007 0.0111

0.0110 0.0113 0.0120 0.0914 0.0119

0.0105 0.0111 0.0116 0.0820 0.0128

0.0099 0.0109 0.0112 0.0726 0.0136

0.0094 0.0107 0.0108 0.0635 0.0144

0.0090 0.0105 0.0105 0.0547 0.0151

0.0085 0.0104

0.0081 0.0102

0.0078 0.0101

0.0075 0.0100

0.0073 0.0099

0.0072 0.0099

0.0071 0.0098

0.0071 0.0098

0.0071 0.0098

0.0071 0.0098

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0073 0.0099

0.0073 0.0100

0.0074 0.0100

0.0075 0.0101

0.0076 0.0101

0.0077 0.0102

0.0078 0.0102

0.0079 0.0103

0.0081 0.0104

0.0082 0.0105

0.0084 0.0106

0.0086 0.0107

0.0089 0.0108

0.0091 0.0109

0.0094 0.0111

0.0097 0.0112

0.0100 0.0114

0.0104 0.0115

0.0108 0.0117

0.0112 0.0119

0.0101 0.0465 0.0098 0.0391 0.0096 0.0325 0.0094 0.0270 0.0092 0.0228 0.0091 0.0200 0.0091 0.0187 0.0091 0.0183 0.0091 0.0179 0.0091 0.0176 0.0091 0.0172 0.0091 0.0169 0.0091 0.0165 0.0091 0.0162 0.0091 0.0159 0.0091 0.0156 0.0092 0.0154 0.0092 0.0151 0.0093 0.0149 0.0093 0.0147 0.0094 0.0144 0.0095 0.0142 0.0095 0.0140 0.0096 0.0139 0.0097 0.0137 0.0099 0.0135 0.0100 0.0134 0.0101 0.0133 0.0103 0.0131 0.0105 0.0130 0.0107 0.0129 0.0109 0.0128 0.0111 0.0128 0.0114 0.0127 0.0116 0.0126 0.0158 0.0164 0.0170 0.0174 0.0177 0.0179 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0179 0.0179 0.0178 0.0178 0.0177 0.0177 0.0176 0.0175 0.0174 0.0173 0.0171 0.0170 0.0168 0.0166 0.0164 0.0162 0.0160 0.0157 0.0155 0.0152

0.0116 0.0121 0.0119 0.0126 0.0148

0.0121 0.0123 0.0122 0.0125 0.0145

0.0126 0.0126 0.0126 0.0125 0.0141

0.0131 0.0128 0.0129 0.0125 0.0138

0.0137 0.0131 0.0133 0.0125 0.0133

0.0143 0.0133 0.0137 0.0124 0.0129

0.0150 0.0136 0.0141 0.0124 0.0124];

sp=csapi({x0 y0},z0);%可得到每片三次样条曲面的系数

fnplt(sp); %可得到拟合曲面的效果图,见附件

%也可以用最小二乘曲面拟合,代码为:

[m,n]=size(z0);k=9;

C=ones(m*n,1/2*(k+1)*(k+2));

x=reshape(ones(n,1)*x0,m*n,1);

y=reshape(y0'*ones(1,m),m*n,1);

z=reshape(z0,m*n,1);

for j=0:k

for i=0:j

C(:,1/2*(j+1)*(j+2)-j+i)=x.^(j-i).*y.^i;

end

end

coefficient=C\z;

%做出曲面效果图见附件2,此图与图1稍有不同,因为采集点较少,所以拟合次数对结果影响很大 syms x y

z=ones(1,1/2*(k+1)*(k+2));sum=0;

for j=0:k

for i=0:j

sum=sum+sym(x^(j-i)*y^i)*coefficient(1/2*(j+1)*(j+2)-j+i);

end

end

figure;ezmesh(sum,[min(x0),max(x0),min(y0),max(y0)])

我在matlab下想对函数z=a(1)*x+a(2)*y+a(3)进行最小二乘拟合,数据为 x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];

y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];

z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];

x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];

y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];

z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];

A=[x',y',ones(size(x'))];

a=A\z'

得到

a =

0.0592

0.1269

2.1371

就是说a(1)=0.0592

a(2)=0.1269

a(3)=2.371

原理:

我们可以把这题看成已知x,y,z,来求a(1),a(2),a(3)

由于表达式对于a(1),a(2),a(3)来说是线性的。

也就相当于求解三元一次方程组(只不过这里的方程数比未知数个数多)。这个可以用矩阵来解决。

你先看一下上面构造出来的A,然后再看一下A乘以[a1;a2;a3]这个列向量。 可能你就知道上面是什么意思了。

%可用样条曲面拟合,最好对原数据整理一下,拟合的代码如下:

x0=2.2:0.1:7;y0=10:5:30;

z0 =[ 0.0121 0.0118 0.0129 0.1098 0.0103

0.0116 0.0116 0.0124 0.1007 0.0111

0.0110 0.0113 0.0120 0.0914 0.0119

0.0105 0.0111 0.0116 0.0820 0.0128

0.0099 0.0109 0.0112 0.0726 0.0136

0.0094 0.0107 0.0108 0.0635 0.0144

0.0090 0.0105 0.0105 0.0547 0.0151

0.0085 0.0104

0.0081 0.0102

0.0078 0.0101

0.0075 0.0100

0.0073 0.0099

0.0072 0.0099

0.0071 0.0098

0.0071 0.0098

0.0071 0.0098

0.0071 0.0098

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0072 0.0099

0.0073 0.0099

0.0073 0.0100

0.0074 0.0100

0.0075 0.0101

0.0076 0.0101

0.0077 0.0102

0.0078 0.0102

0.0079 0.0103

0.0081 0.0104

0.0082 0.0105

0.0084 0.0106

0.0086 0.0107

0.0089 0.0108

0.0091 0.0109

0.0094 0.0111

0.0097 0.0112

0.0100 0.0114

0.0104 0.0115

0.0108 0.0117

0.0112 0.0119

0.0101 0.0465 0.0098 0.0391 0.0096 0.0325 0.0094 0.0270 0.0092 0.0228 0.0091 0.0200 0.0091 0.0187 0.0091 0.0183 0.0091 0.0179 0.0091 0.0176 0.0091 0.0172 0.0091 0.0169 0.0091 0.0165 0.0091 0.0162 0.0091 0.0159 0.0091 0.0156 0.0092 0.0154 0.0092 0.0151 0.0093 0.0149 0.0093 0.0147 0.0094 0.0144 0.0095 0.0142 0.0095 0.0140 0.0096 0.0139 0.0097 0.0137 0.0099 0.0135 0.0100 0.0134 0.0101 0.0133 0.0103 0.0131 0.0105 0.0130 0.0107 0.0129 0.0109 0.0128 0.0111 0.0128 0.0114 0.0127 0.0116 0.0126 0.0158 0.0164 0.0170 0.0174 0.0177 0.0179 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0180 0.0179 0.0179 0.0178 0.0178 0.0177 0.0177 0.0176 0.0175 0.0174 0.0173 0.0171 0.0170 0.0168 0.0166 0.0164 0.0162 0.0160 0.0157 0.0155 0.0152

0.0116 0.0121 0.0119 0.0126 0.0148

0.0121 0.0123 0.0122 0.0125 0.0145

0.0126 0.0126 0.0126 0.0125 0.0141

0.0131 0.0128 0.0129 0.0125 0.0138

0.0137 0.0131 0.0133 0.0125 0.0133

0.0143 0.0133 0.0137 0.0124 0.0129

0.0150 0.0136 0.0141 0.0124 0.0124];

sp=csapi({x0 y0},z0);%可得到每片三次样条曲面的系数

fnplt(sp); %可得到拟合曲面的效果图,见附件

%也可以用最小二乘曲面拟合,代码为:

[m,n]=size(z0);k=9;

C=ones(m*n,1/2*(k+1)*(k+2));

x=reshape(ones(n,1)*x0,m*n,1);

y=reshape(y0'*ones(1,m),m*n,1);

z=reshape(z0,m*n,1);

for j=0:k

for i=0:j

C(:,1/2*(j+1)*(j+2)-j+i)=x.^(j-i).*y.^i;

end

end

coefficient=C\z;

%做出曲面效果图见附件2,此图与图1稍有不同,因为采集点较少,所以拟合次数对结果影响很大 syms x y

z=ones(1,1/2*(k+1)*(k+2));sum=0;

for j=0:k

for i=0:j

sum=sum+sym(x^(j-i)*y^i)*coefficient(1/2*(j+1)*(j+2)-j+i);

end

end

figure;ezmesh(sum,[min(x0),max(x0),min(y0),max(y0)])

我在matlab下想对函数z=a(1)*x+a(2)*y+a(3)进行最小二乘拟合,数据为 x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];

y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];

z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];

x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];

y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];

z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];

A=[x',y',ones(size(x'))];

a=A\z'

得到

a =

0.0592

0.1269

2.1371

就是说a(1)=0.0592

a(2)=0.1269

a(3)=2.371

原理:

我们可以把这题看成已知x,y,z,来求a(1),a(2),a(3)

由于表达式对于a(1),a(2),a(3)来说是线性的。

也就相当于求解三元一次方程组(只不过这里的方程数比未知数个数多)。这个可以用矩阵来解决。

你先看一下上面构造出来的A,然后再看一下A乘以[a1;a2;a3]这个列向量。 可能你就知道上面是什么意思了。


相关文章

  • 区域似大地水准面精化模型算法的优选
  • 第20卷第1期 2011年2月 ENGINEERING 测 绘 工 程 Vol.20l.1OFSURVEYINGANDMAPPING Feb.,2011 区域似大地水准面精化模型算法的优选 雷伟伟1,张 锋2 (1.河南理工大学测绘与国土信 ...查看


  • 神经网络在数据拟合方面的应用
  • 神经网络在数据拟合方面的应用 摘要 本文将讲述人工神经网络及其数据拟合中的应用.人工神经网络是从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络.它在模式识别.智能机器人.自动控制.预测估计.生物.医学 ...查看


  • 基于MATLAB语言的发动机万有特性曲线的绘制
  • 设计与研究 基于MATLAB语言的发动机万有特性曲线的绘制 黄美美 赵志伟 靳华磊 贾延涛 孙海鹏 (山东省内燃机研究所,济南250100) 摘要:利用MATLAB语言的强大的数据处理和绘图功能,在建立发动机万有特性曲线曲面拟合数学模 三维 ...查看


  • 基于高斯曲率极值点的散乱点云数据特征点提取
  • 统 仿 真 学 报 V ol. 20 No. 9 2008年5月 Journal of System Simulation May, 2008 第20卷第9期 系 基于高斯曲率极值点的散乱点云数据特征点提取 马骊溟,徐 毅,李泽湘 (哈尔滨 ...查看


  • 区域高程异常内插方法研究7
  • 2008年第2期・北京测绘・ 区域高程异常内插方法研究 沈京湘,王鹤,郎刚,陈平川 (中航勘察设计研究院,北京100098) [摘要]介绍了部分高程异常内插的方法.结合一个具体的实例,在2kmx2km的小范围内采用多项式拟合内插的方法进行高 ...查看


  • 什么叫拟合?什么叫插值?二者的区别是什么?
  • 什么叫拟合?什么叫插值?二者的区别是什么? 插值和拟合都是函数逼近或者数值逼近的重要组成部分 他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义 在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的 目的,即通过&qu ...查看


  • 空间网格结构施加等效节点荷载的ANSYS实现
  • 张乐弓,等:空间网格结构施加等效节点荷栽的ANSYS实现 空间网格结构施加等效节点荷载的ANSYS实现 张乐弓, 乐风江1 宋艳生2 (1.新疆大学建筑工程学院,乌鲁木齐830047:2.新疆大学建筑设计研究院,乌鲁木齐830008) 摘 ...查看


  • 基于MATLAB的发动机万有特性曲线绘制方法
  • 2009年第2期(总第110期) 内燃机与动力装置I.c.E&Powerplant 2009年4月 [设计研究] 基于MATLAB的发动机万有特性曲线绘制方法 周广猛1,郝志刚2,刘瑞林1,陈东3,管金发1,张春海4 (1.军事交通 ...查看


  • 边缘检测及其在医学图像中的应用_袁华
  • 生物医学工程学杂志 2001; 18(1) ∶149-153 J Biomed Eng 边缘检测及其在医学图像中的应用 1 1 1 2 * 袁 华 滕奇志 综述 袁支润 陶德元 审校 1(四川大学建筑学院生物医学工程研究所, 成都 6100 ...查看


热门内容