我正在做一个项目,其中包括用matlab制作角膜的三维模型。我在同一张图中有6个plot3来画一个角膜

但现在我想要一个表面图。

别在意曲线的方向。注意,所有的plot3都有x,y和z,它们是向量。
提前感谢
发布于 2018-05-23 14:37:35
如果我是你,我会使用Surf命令独木冲浪。它用于显示x,y,z数据。由于您没有那么多的数据(仅6),您将不得不插值所有其他值。因此,我将使用散乱插值函数doku散射插值。
小心所有这些都是伪码
F = scatteredInterpolant(x_existing,y_existing,z_existing);生成一个分散的内插对象。您已经在那里提供了已经存在的数据。之后,生成要插入的点:
%generates samples from -4 t0 4 in 0.05 steps
[x_sample,y_sample] = meshgrid(-4:0.05:4,-4:0.05:4);现在,使用散乱的插值obj计算拟合的z值。
z_interpolated=F(x_sample,y_sample) %interpolates
surf(x_sample,y_sample,z_interpolated) %plots with surf between -4 and 4这里的工作守则
%serialiasation of data (special for this usecase)
x_data=[h0(30:632,6);(a30(28:408,3))+0.527;(a60(276:632,3));(a90(26:575,3))+3.417;(a120(188:586,3))-0.6625;(a150(16:380,3))+1.173];
y_data=[(h0(30:632,5));((a30(28:408,2))-0.9128);(a60(276:632,2));(a90(26:575,2));(a120(188:586,2))-0.3825;((a150(16:380,2))+2.032)];
z_data=[yA0;yA30+0.162;yA60;yA90+0.837;yA120+0.135;yA150+0.135];
% cleaning the data of nan values
x_data=x_data(~isnan(z_data));
y_data=y_data(~isnan(z_data));
z_data=z_data(~isnan(z_data));%random for the looks
%interpolating
F=scatteredInterpolant(x_data,y_data,z_data);
%read yourself what this does
F.Method = 'natural';
F.ExtrapolationMethod = 'none';
%choosing sample points
[x_sample,y_sample] = meshgrid(-6:0.05:6,-6:0.05:6);
%interpolation
z_interpolated=F(x_sample,y_sample);
%plot
surf(x_sample,y_sample,z_interpolated)希望我能帮到你。如果你尝试它,它工作,它将是非常好的你张贴工作代码在这里,以便在未来这里有一个工作的解决方案。
https://stackoverflow.com/questions/50487394
复制相似问题