Je veux connaître la manière la plus simple de tracer des vecteurs dans MATLAB . Par exemple:
a = [2 3 5];
b = [1 1 0];
c = a + b;
Je veux visualiser cet ajout de vecteur comme une méthode tête-bêche/parallélogramme. Comment puis-je tracer ces vecteurs avec une pointe de flèche?
a = [2 3 5];
b = [1 1 0];
c = a+b;
starts = zeros(3,3);
ends = [a;b;c];
quiver3(starts(:,1), starts(:,2), starts(:,3), ends(:,1), ends(:,2), ends(:,3))
axis equal
Je suis d'accord avec Aamir que la soumission arrow.m de Erik Johnson sur le MathWorks File Exchange est une très belle option. Vous pouvez l'utiliser pour illustrer les différentes méthodes d'addition de vecteur comme ceci:
Méthode de bout en bout:
o = [0 0 0]; %# Origin
a = [2 3 5]; %# Vector 1
b = [1 1 0]; %# Vector 2
c = a+b; %# Resultant
arrowStarts = [o; a; o]; %# Starting points for arrows
arrowEnds = [a; c; c]; %# Ending points for arrows
arrow(arrowStarts,arrowEnds); %# Plot arrows
Méthode de parallélogramme:
o = [0 0 0]; %# Origin
a = [2 3 5]; %# Vector 1
b = [1 1 0]; %# Vector 2
c = a+b; %# Resultant
arrowStarts = [o; o; o]; %# Starting points for arrows
arrowEnds = [a; b; c]; %# Ending points for arrows
arrow(arrowStarts,arrowEnds); %# Plot arrows
hold on;
lineX = [a(1) b(1); c(1) c(1)]; %# X data for lines
lineY = [a(2) b(2); c(2) c(2)]; %# Y data for lines
lineZ = [a(3) b(3); c(3) c(3)]; %# Z data for lines
line(lineX,lineY,lineZ,'Color','k','LineStyle',':'); %# Plot lines
J'ai trouvé cette fonction arrow(start, end)
sur MATLAB Central qui est parfaite dans ce but de dessiner des vecteurs avec une amplitude et une direction vraies.
Je l'ai fait de cette façon,
% vectors I want to plot as rows (XSTART, YSTART) (XDIR, YDIR)
rays = [
1 2 1 0 ;
3 3 0 1 ;
0 1 2 0 ;
2 0 0 2 ;
] ;
% quiver plot
quiver( rays( :,1 ), rays( :,2 ), rays( :,3 ), rays( :,4 ) );
% vectors I want to plot as rows (XSTART, YSTART, ZSTART) (XDIR, YDIR, ZDIR)
rays = [
1 2 0 1 0 0;
3 3 2 0 1 -1 ;
0 1 -1 2 0 8;
2 0 0 0 2 1;
] ;
% quiver plot
quiver3( rays( :,1 ), rays( :,2 ), rays( :,3 ), rays( :,4 ), rays( :,5 ), rays( :,6 ) );
% draw simple vector from pt a to pt b
% wtr : with respect to
scale=0;%for drawin vectors with true scale
a = [10 20 30];% wrt origine O(0,0,0)
b = [10 10 20];% wrt origine O(0,0,0)
starts=a;% a now is the origine of my vector to draw (from a to b) so we made a translation from point O to point a = to vector a
c = b-a;% c is the new coordinates of b wrt origine a
ends=c;%
plot3(a(1),a(2),a(3),'*b')
hold on
plot3(b(1),b(2),b(3),'*g')
quiver3(starts(:,1), starts(:,2), starts(:,3), ends(:,1), ends(:,2), ends(:,3),scale);% Use scale = 0 to plot the vectors without the automatic scaling.
% axis equal
hold off