繁体   English   中英

Matlab中表面图上的连接点

[英]Connecting points on a surface plot in matlab

我正在一个项目中,我们以线性方式进行测量并旋转样本以生成3D表面图。

数据来自极性格式,我们有4个数据集:

theta = 0  , r = -20 -- 20
theta = 45 , r = -20 -- 20
theta = 90 , r = -20 -- 20
theta = 135, r = -20 -- 20

通过生成带有sin和cos的x和y向量并将结果相对于该矩阵进行绘制,可以将其转换为笛卡尔点。

因此,示例“准备绘制”矩阵集如下所示:

x [4x21 double]
-20    -18    -16 ..
-14.14 -12.73 -11.31 ..
0      0      0 ..
..

y [4x21 double]
0      0      0 ..
-14.14 -12.73 -11.31 ..
-20    -18    -16 ..
..

z [4x21 double]
.224 .281 .320 ..
.228 .280 .312 ..
.282 .349 .377 ..
..

具有一些基本格式的输出表面图如下所示: 以上数据的笛卡尔曲面

Matlab连接我想要的向量之间。 但是,它没有将90度旋转连接到135度旋转。 我如何做到这一点?

产生类似于上面示例的图形的基本代码是这样的:

theta = [ 0 , -45 , -90 , -135];
r = -20 : 2 : 20;
for i = 1 : 4
    xc(i,:) = r .* cosd(theta(i));
    yc(i,:) = r .* sind(theta(i));
    zc(i,:) = [[0 : 0.1 : 0.9] , [1 : -0.1 : 0]];
end
figure
surf(xc,yc,zc);

您只需要明确地执行theta=-180 就像plot不会环绕并连接第一个点和最后一个点一样, surf不会将第一个“边缘”连接到最后一个“边缘”。 使theta=[0 -45 -90 -135 -180]for i=1:5 ,这应该很好。

在此处输入图片说明

您会发现着色看起来有些怪异,这可能会更好看,具体取决于应用程序: surf(xc,yc,zc,'FaceColor','interp')

在此处输入图片说明

创建数据的更好方法是

[R,TH]=meshgrid(r,theta);
[xc,yc]=pol2cart(TH*pi/180,R);
zc = repmat([[0 : 0.1 : 0.9] , [1 : -0.1 : 0]],length(theta),1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM