微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由2D曲线革命与repmat生成的3D绘图后提取Z值

如何解决由2D曲线革命与repmat生成的3D绘图后提取Z值

我坚持一个明显简单的问题。我必须旋转360°围绕轴的2D曲线,以获得3D绘图。再说了,我想这个正弦函数来做到这一点:

z = sin(r);
theta = 0:pi/20:2*pi;
xx = bsxfun(@times,r',cos(theta));
yy = bsxfun(@times,sin(theta));
zz = repmat(z',1,length(theta));
surf(xx,yy,zz)
axis equal

我现在要可视化的Z平面,存储在矩阵的数值。我通常会做这种方式:

ch=get(gca,'children')
X=get(ch,'Xdata')
Y=get(ch,'Ydata')
Z=get(ch,'Zdata')
 

如果我用 Z 可视化

imagesc(Z)

我不获取情节的Z的实际值,但是“未围绕”投影。我怀疑这是与我产生了曲线的方式,从事实我没有类型的函数

zz = f(xx,yy)

是否有任何办法可以得到XX和YY的网格值,以及ZZ在每个格点的值?

感谢您的帮助。

解决方法

您可以使用网格网格代替 bsxfun

% The two parameters needed for the parametric equation
h  = linspace(0,2) ;
th = 0:pi/20:2*pi ;
[R,T] = meshgrid(h,th) ;
% The parametric equation
%    f(x)    Rotation along Z
%     ↓           ↓
X = sin(R)  .*  cos(T) ;
Y = sin(R)  .*  sin(T) ;
% Z = h
Z = R ;
surf(X,Y,Z,'EdgeColor',"none")
xlabel('X')
ylabel('Y')
zlabel('Z')

哪些产品:

enter image description here

如果要提取 X 平面 (X = 0) 上的轮廓,可以使用 contour

contour(Y,X,[0,0])

哪些产品:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。