plotting N number of lines without for-loops

6 vues (au cours des 30 derniers jours)
Oscar Frick
Oscar Frick le 22 Juin 2018
Commenté : Dieter Karst le 13 Mai 2020
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.

Réponse acceptée

KSSV
KSSV le 22 Juin 2018
Modifié(e) : KSSV le 22 Juin 2018
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 commentaire
Oscar Frick
Oscar Frick le 22 Juin 2018
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.

Connectez-vous pour commenter.

Plus de réponses (1)

Stephen23
Stephen23 le 22 Juin 2018
Modifié(e) : Stephen23 le 22 Juin 2018
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:

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by