首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab中显示超模并保存数值

在Matlab中显示超模并保存数值
EN

Stack Overflow用户
提问于 2013-07-25 04:33:28
回答 1查看 961关注 0票数 1

我用表面范数matlab函数来计算表面法线。当我使用它为:surfnorm(pcloud(:,:,1),pcloud(:,:,2),pcloud(:,:,3));时,表面法线的图形会出现,但是法线值不会被保存。所以我使用:[Nx,Ny,Nz]=surfnorm(pcloud(:,:,1),pcloud(:,:,2),pcloud(:,:,3));,但它没有保存Nx,Ny,Nz中的正常值,但没有显示正常的图形。那么如何使两者兼而有之?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-25 08:11:45

根据文档,您希望同时执行的两个操作似乎是相互排斥的:

Nx,Ny,Nz = SURFNORM(X,Y,Z)返回含分量(X,Y,Z)的三维曲面的分量。将法线归一化为长度1。Nx,Ny,Nz = SURFNORM( Z )返回曲面Z的表面法线分量,不带左参数,SURFNORM(X,Y,Z)或SURFNORM(Z)绘制表面的法线。SURFNORM(AX,.)把地块变成斧子而不是GCA。

但是,一旦创建,您就可以从表面法线图中检索法线向量数据,如下所示:

代码语言:javascript
复制
h=figure;
surfnorm(pcloud(:,:,1),pcloud(:,:,2),pcloud(:,:,3));
axesObjs = get(h, 'Children');
dataObjs = get(axesObjs, 'Children'); 
[Nx,Ny,Nz] = deal(get(dataObjs(1), 'XData').', get(dataObjs(1), 'YData').', get(dataObjs(1), 'ZData').');

这似乎是复杂的,但如果这是计算费用,您正在寻求避免这可能是最好的方式来做到这一点。

编辑:

(1)您可以将h=figure替换为调用figure,然后调用h=gcf

(2)我对Nx, Ny, Nz向量的解释是,包含surfnorm绘制的向量的位置和方向的坐标(不一定是标准化的),以及附加的NaN值,所以如果打印出[Nx,Ny,Nz],您应该看到如下内容:

代码语言:javascript
复制
         0         0   -1.0000   <-- position of origin
         0         0   -1.0000   <-- direction of vector
       NaN       NaN       NaN   <-- nonsense
   -0.5878         0   -0.8090
   -0.7036   -0.0344   -0.9684
       NaN       NaN       NaN
   -0.9511         0   -0.3090
   -1.1341   -0.0543   -0.3685
       NaN       NaN       NaN
   -0.9511         0    0.3090
   -1.1341   -0.0543    0.3685
       NaN       NaN       NaN
    ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17849053

复制
相关文章

相似问题

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