首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中用矢量绘制多条曲线的三维模型

在matlab中用矢量绘制多条曲线的三维模型
EN

Stack Overflow用户
提问于 2018-05-23 11:35:03
回答 1查看 316关注 0票数 2

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

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

别在意曲线的方向。注意,所有的plot3都有x,y和z,它们是向量。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 14:37:35

如果我是你,我会使用Surf命令独木冲浪。它用于显示x,y,z数据。由于您没有那么多的数据(仅6),您将不得不插值所有其他值。因此,我将使用散乱插值函数doku散射插值

小心所有这些都是伪码

代码语言:javascript
复制
F = scatteredInterpolant(x_existing,y_existing,z_existing);

生成一个分散的内插对象。您已经在那里提供了已经存在的数据。之后,生成要插入的点:

代码语言:javascript
复制
%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值。

代码语言:javascript
复制
z_interpolated=F(x_sample,y_sample) %interpolates
surf(x_sample,y_sample,z_interpolated) %plots with surf between -4 and 4

这里的工作守则

代码语言:javascript
复制
   %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)

希望我能帮到你。如果你尝试它,它工作,它将是非常好的你张贴工作代码在这里,以便在未来这里有一个工作的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50487394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档