已知3组数据怎么通过matlab进行曲面拟合啊??

数据是这样的
x=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.5,0.5,0.5,0.5,0.5,0.6,0.6,0.6,0.6,0.6,0.7,0.7,0.7,0.7,0.8,0.8,0.8,0.9,0.9,1]
y=[0.139,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,0.243,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,0.34,0.4,0.5,0.6,0.7,0.8,0.9,1,0.438,0.5,0.6,0.7,0.8,0.9,1,0.535,0.6,0.7,0.8,0.9,1,0.632,0.7,0.8,0.9,1,0.722,0.8,0.9,1,0.819,0.9,1,0.91,1,1]
z=[61.22,61.4,62.55,63.71,64.24,65.43,66.67,68.09,70.24,71.10,59.11,59.38,60.97,61.61,63.28,65.17,67.3,70.01,71.1,59.89,60.1,60.81,62.73,64.75,67.07,69.9,71.1,56.72,58.04,60.61,63.32,66.19,69.76,71.1,55.46,57.26,60.97,64.93,69.5,71.1,57.34,58.14,63.41,69.27,71.1,62.78,63.2,69.25,71.1,69.01,69.25,71.1,69.25,71.1,71.1]
求助啊
每一个xyz划分成一组点

下面才是你的图吧。

xx=nan*zeros(10);yy=xx;zz=yy;
n=0;
for k=1:10
h=10-k+1;
xx(1:h,k)=x(n+1:n+h);
yy(1:h,k)=y(n+1:n+h);
zz(1:h,k)=z(n+1:n+h);
n=n+h;
end
mesh(xx,yy,zz)追问

请问怎么添加我的数据呢?本人比较菜

追答

你的(x,y)数据分布在一个三角形区域里面,不是正方形的数据区域(即不能弄成矩阵的形式),不好进行曲面插值,你是想进行曲面的平滑还是拟合成某种参数待定的二元函数形式?

追问

曲面的平滑就行,做出一个曲面来,可以帮忙写个代码出来吗,谢谢

追答

%x=你的x数据,这里省略

%y=你的y数据,这里省略

%z=你的z数据,这里省略

zz=zeros(10);

I=reshape(1:100,10,[]);

I1=reshape(tril(I),1,[]);

I1(I1==0)=[];

zz(I1)=z;

zz=zz+triu(zz',1);


[xx,yy]=meshgrid(0.1:0.1:1);

yy1=yy;

yy1(1:11:100)=[0.139,0.243,0.34,0.438,0.535,0.632,0.722,0.819,0.91,1];

for i=1:10

   zz(i,i) =spline(yy1(:,i),zz(:,i),yy(i,i));

end


[xxx,yyy]=meshgrid(linspace(0,1,100));

zzz = interp2(xx,yy,zz,xxx,yyy,'spline',nan);


I=reshape(1:10000,100,[]);

I1=reshape(triu(I),1,[]);

I1(I1==0)=[];


zzz(I1)=nan;

surf(xxx,yyy,zzz)

shading interp

xlabel('x');ylabel('y');zlabel('z');

温馨提示:答案为网友推荐,仅供参考
相似回答