tag - xlabel latex matlab
¿Cómo dibujar vectores(vectores 2D/3D físicos) en MATLAB? (6)
Encontré esta función de arrow.m en MATLAB Central, que es perfecta para dibujar vectores con verdadera magnitud y dirección.
Quiero saber la forma más simple de trazar vectores en MATLAB . Por ejemplo:
a = [2 3 5];
b = [1 1 0];
c = a + b;
Quiero visualizar esta adición vectorial como método cabeza a cola / paralelogramo. ¿Cómo trazo estos vectores con una punta de flecha?
Estoy de acuerdo con Aamir que la sumisión arrow.m de Erik Johnson en MathWorks File Exchange es una muy buena opción. Puede usarlo para ilustrar los diferentes métodos de adición de vectores de la siguiente manera:
Método de punta a cola:
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étodo de paralelogramo:
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
Lo hice de esta manera,
2D
% 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 ) );
3D
% 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
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