如何在 Matlab 中绘制 3D 分隔线
How to plot 3D separated lines in Matlab
我有大小为 5x3 的矩阵 A
,其中包括一些点的 3D (X,Y,Z) 坐标,如下所示:
A = [5.2985 0.3737 6.7050;
0.5921 2.0948 6.9703;
-4.2524 3.8338 6.9863;
-3.9856 3.708 2.7925;
-3.6727 3.58830 1.2437]
和大小为 5x3 的矩阵 B
,其中包括另一个点的 3D 坐标,如下所示:
B = [10.715877 -19.59950 3.575112000;
14.3055 -17.9177 6.46700;
17.67064 -16.201099 9.86076800;
14.8090 -16.30260 12.64600;
13.412823 -16.49700 13.4652810]
和大小为 5x1 的向量 D
,其中包括矩阵 A
和矩阵 B
的每个点之间的距离误差,如下所示:
D = [0.001;
0.03;
0.07;
0.06;
0.6]
例如D(1,1)
是A(1)
和B(1)
之间的距离误差,D(2,1)
是A(2)
和B(2)
之间的距离误差,很快。现在,我的问题是如何在同一图中绘制这两个 3D 点数据集及其距离误差线?以及如何以相同颜色显示每条距离线及其对应点?例如,来自矩阵 A
的 point1
和来自矩阵 B
的 point1
并且它们的距离误差显示为红色,然后来自矩阵 A
的 point2
和来自矩阵 B
的 point2
和它们的距离误差显示为蓝色等。
它应该是这样的:
我更新了我的答案以反映您的意见:
hold on;
BA = B-A;
cc=hsv(size(A,1));
for k = 1:size(A,1)
scatter3([A(k,1),B(k,1)],[A(k,2),B(k,2)],[A(k,3),B(k,3)],'MarkerFaceColor',cc(k,:), 'MarkerEdgeColor', 'none');
plot3([A(k,1),A(k,1)+BA(k,1)*D(k)],[A(k,2),A(k,2)+BA(k,2)*D(k)],[A(k,3),A(k,3)+BA(k,3)*D(k)],'-', 'Color', cc(k,:));
end
hold off;
结果图:
我有大小为 5x3 的矩阵 A
,其中包括一些点的 3D (X,Y,Z) 坐标,如下所示:
A = [5.2985 0.3737 6.7050;
0.5921 2.0948 6.9703;
-4.2524 3.8338 6.9863;
-3.9856 3.708 2.7925;
-3.6727 3.58830 1.2437]
和大小为 5x3 的矩阵 B
,其中包括另一个点的 3D 坐标,如下所示:
B = [10.715877 -19.59950 3.575112000;
14.3055 -17.9177 6.46700;
17.67064 -16.201099 9.86076800;
14.8090 -16.30260 12.64600;
13.412823 -16.49700 13.4652810]
和大小为 5x1 的向量 D
,其中包括矩阵 A
和矩阵 B
的每个点之间的距离误差,如下所示:
D = [0.001;
0.03;
0.07;
0.06;
0.6]
例如D(1,1)
是A(1)
和B(1)
之间的距离误差,D(2,1)
是A(2)
和B(2)
之间的距离误差,很快。现在,我的问题是如何在同一图中绘制这两个 3D 点数据集及其距离误差线?以及如何以相同颜色显示每条距离线及其对应点?例如,来自矩阵 A
的 point1
和来自矩阵 B
的 point1
并且它们的距离误差显示为红色,然后来自矩阵 A
的 point2
和来自矩阵 B
的 point2
和它们的距离误差显示为蓝色等。
它应该是这样的:
我更新了我的答案以反映您的意见:
hold on;
BA = B-A;
cc=hsv(size(A,1));
for k = 1:size(A,1)
scatter3([A(k,1),B(k,1)],[A(k,2),B(k,2)],[A(k,3),B(k,3)],'MarkerFaceColor',cc(k,:), 'MarkerEdgeColor', 'none');
plot3([A(k,1),A(k,1)+BA(k,1)*D(k)],[A(k,2),A(k,2)+BA(k,2)*D(k)],[A(k,3),A(k,3)+BA(k,3)*D(k)],'-', 'Color', cc(k,:));
end
hold off;
结果图: