plotting N number of lines without for-loops

4 次查看(过去 30 天)
I have two matrixes of size (N,3), "S" corresponding to line start points "E" to line end points. I want to plot these lines, and know I can do it using
hold on
N = size(S,1);
for i = 1:N
plot3( [S(i,1),E(i,1)] , [S(i,2),E(i,2)] , [S(i,3),E(i,3)] )
end
Is there a way to achieve this without using for-loops? I have heard that inputing matrixes should have Matlab interpret the columns as several lines, but I have not gotten it to work properly.

采纳的回答

KSSV
KSSV 2018-6-22
编辑:KSSV 2018-6-22
S = [0 0 0] ;
N = 10 ;
E = rand(N,3) ;
figure
hold on
S = repmat(S,N,1) ;
x = [S(:,1) E(:,1)] ;
y = [S(:,2) E(:,2)] ;
z = [S(:,3) E(:,3)] ;
plot3(x',y',z')
  1 个评论
Oscar Frick
Oscar Frick 2018-6-22
That is exactly what I tried doing, but I couldn't get it to work properly. I must have messed up something in the syntax.

请先登录,再进行评论。

更多回答(1 个)

Stephen23
Stephen23 2018-6-22
编辑:Stephen23 2018-6-22
Simpler:
>> N = 5;
>> S = randi(9,N,3);
>> E = randi(9,N,3);
>> A = permute(cat(3,S,E),[3,1,2]);
>> plot3(A(:,:,1),A(:,:,2),A(:,:,3))
Giving:

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

产品


版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by