Matlab - ¿Cómo graficar un plano generado por dos vectores?

 
Vista:
Imágen de perfil de Juan Carlos
Val: 58
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

¿Cómo graficar un plano generado por dos vectores?

Publicado por Juan Carlos (22 intervenciones) el 12/06/2019 23:38:48
Saludos, estoy tratando de graficar el espacio entre dos vectores obtenidos a partir de la iteración continua sobre una matriz inicial que va generando submatrices de los cuales se toman dos vectores y se trata de generar la grafica mencionada. Algo similar a la siguiente imagen

e9Cmj


He tomado el enfoque de generar un plano a partir de un conjunto de puntos dado y el producto cruz con las vectores antes mencionados.

El problema es que para hacer el producto cruz en matlab se necesitan vectores de longitud 3 (según la documentación) y los vectores que uso son de longitud 2, he tratado de agregar un tercer elemento pero al tratar de ejecutar la programación se me indica errores de balanceo de corchetes. Por lo que no puedo generar el plano mencionado

Aquí pongo el código, cabe mencionar que al inicio de este listado ya se cuenta con una matriz previamente ingresada por el usuario (valor) , la cual no se detalla pero si se contempla.

Este listado es correcto, toma la matriz inicial, itera sobre ella, genera submatrices y son graficadas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for jj = 1:size(valor,1)-1
 
    for kk = jj+1:size(valor,1)
       NM= valor([jj,kk],:) %se itera sobre la matriz inicial para formar NM
            F=rref(NM);
            RangS=rank(F)
            [r, c] = size(NM)
               if (rank(NM))==r  %se prueba una condición de linealidad
               set(handles.text3,'String',('Texto 1')); se manda un mensaje dentro la gui
                figure
                   hold on;
                z = zeros(size(NM, 1), 1);
               quiver3(z, z, z, NM(:,1), NM(:,2), z, 0);  %se grafican los vectores que conforman NM en cada iteración.
                grid on
                view(45, 45);
                s=sum(NM);


Lo que se amplia y no funciona correctamente es lo siguiente agregado al código anterior

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
for jj = 1:size(valor,1)-1
 
    for kk = jj+1:size(valor,1)
       NM= valor([jj,kk],:) %se itera sobre la matriz inicial para formar NM
            F=rref(NM);
            RangS=rank(F)
            [r, c] = size(NM)
               if (rank(NM))==r  %se prueba una condición de linealidad
               set(handles.text3,'String',('Texto 1')); se manda un mensaje dentro la gui
                figure
                   hold on;
                z = zeros(size(NM, 1), 1);
               quiver3(z, z, z, NM(:,1), NM(:,2), z, 0);  %se grafican los vectores que conforman NM en cada iteracion.
                grid on
                view(45, 45);
                s=sum(NM);
                   p = 10*(rand(3,1) - 0.5); %genera un punto que supongo esta dentro del plano
 
 
                    v3 = cross(NM(1,:),NM(2,:)); % producto cruz el cual no se ejecuta por la longitud 3 necesaria
 
 
                   [ x , y ] = meshgrid( p(1)+(-5:5) , p(2)+(-5:5) );%genero los puntos del plano
 
 
                 z = p(3) - (v3(1)*(x-p(1)) + v3(2)*(y-p(2)))/v3(3);%ecuación del plano
 
 
                 surf(x,y,z)% grafica el plano definido en el paso anterior

el problema es que no puedo llevar a cabo el producto cross y ya he intentado ajustar los vectores en cuanto a la notación con el operador range (:) y en paralelo tratar de crear un tercer elemento de los vectores, pero siempre me marca un error de balanceo de paréntesis.

Agradecido de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juan Carlos
Val: 58
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

¿Cómo graficar un plano generado por dos vectores?

Publicado por Juan Carlos (22 intervenciones) el 14/06/2019 19:26:55
Saludos, ajuste el código para generar dos vectores con longitud 3, después de la definición de p

1
2
3
u1=[NM(1,:) 0]
u2=[NM(2,:) 0]
v3 = cross(u1,u2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David
Val: 804
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

¿Cómo graficar un plano generado por dos vectores?

Publicado por David correa.dave30@gmail.com (1082 intervenciones) el 16/06/2019 03:21:24
Hola;

Podrías mostrar el mensaje de error?

​Saludos
David Correa
Director de Servicios de Programación
E-mail: informes@fismatlab.com
Web page: https://www.fismatlab.com
Facebook: https://www.facebook.com/fismatlabperu
Blog: http://fismatlab.blogspot.com
Spot: https://www.youtube.com/watch?v=NTDY-MRnFMk
WhatsApp: +51 - 922210488
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan Carlos
Val: 58
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

¿Cómo graficar un plano generado por dos vectores?

Publicado por Juan Carlos (22 intervenciones) el 16/06/2019 21:49:31
Gracias David, disculpa ya lo corregí pero perm:iteme debo tener una copia por aquí
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar