Matlab - graficas

 
Vista:

graficas

Publicado por lucera (119 intervenciones) el 26/10/2009 10:01:02
hola!!!

tengo 3 vectores recogidos de otro programa, uno de ellos es la posicion x otro la posicion y u otro la z (que es la que da el valor de los colores) y me gustaria dibujarlos en superficies no se como hacerlo.

la cosa es que cada uno de estos vectores corresponden con el valor de nodos...
es decir la posicion uno de cada nodo es el valor del primer nodo y asi hasta 2488 nodos....

he leido algo sobre graficas y me encuentro con que el 3 vector, para poder dibujarlo como me interesa tiene que estar en funcion de los otros dos y esto no tengo.

he realizado la operacion con el tercer vector de
Z=meshgrid(z); y luego mesh(x,y,Z) y surf(x,y,Z) pero me da error matlab.

alguien sabe como puedo hacer lo que quiero?

gracias
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

RE:graficas

Publicado por fismat (391 intervenciones) el 26/10/2009 11:33:10
Hola Lucera,

Puedes coloar el mensaje de error, asi tendras mayor posibilidad.

Saludos
Fismat
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

RE:graficas

Publicado por lucera (119 intervenciones) el 26/10/2009 11:40:31
no entiendo..............
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

RE:graficas

Publicado por fismat (391 intervenciones) el 26/10/2009 11:45:54
Hola Lucera,

Te sugeria que colocaras el mensaje de error, por que tu colocaste

...
he realizado la operacion con el tercer vector de
Z=meshgrid(z); y luego mesh(x,y,Z) y surf(x,y,Z) pero me da error matlab.

alguien sabe como puedo hacer lo que quiero?

Saludos
Fismat
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

RE:graficas --> la solucion

Publicado por fismat (391 intervenciones) el 26/10/2009 11:43:55
Hola Lucera,

Aqui una idea.

Partimos de tres vectores X y Y como vectores de posicion y Z como vector de los valores a visualizar, en este caso los elementos de los tres vectores son aleatorios, pero tu los puedes adaptar a tus datos.

x=round(20*rand(1,100));
y=round(20*rand(1,100));

z=round(5*rand(1,100));

Ahora para graficar, usamos la funcion scatter, usando circulos como markadores de visualizacion con tamanho 10, podrias revizar la documentacion "help scatter"

scatter(x,y,10,z,'filled','o')

Espero te sea de ayuda.

Saludos
Fismat
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

RE:graficas --> la solucion

Publicado por lucera (119 intervenciones) el 26/10/2009 13:20:41
no es lo que necesito...lo qeu me gustaria seria que los datos se imprimieran como lo hacen mesh o surf pero no se como trabajar con estos tras vectores...

en 3 dimensiones.......
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

RE:graficas --> la solucion

Publicado por Jorge (226 intervenciones) el 26/10/2009 18:55:08
Intenta este código de muestra...

% limpia pantalla y variables
clc; clear; close all

% defines vectores x, y
vx = -4 : 0.2: 4;
vy = -3 : 0.2: 3;

% calcula matriz necesaria
[x,y] = meshgrid(vx, vy);

% calcula z y evita denominador 0
z = x .* y .* (x.^2 - y.^2) ./ (x.^2 + y.^2 + eps);

% genera la figura usando 'plot3'
figure
plot3(x,y,z)
grid on

% genera la figura usando 'meshc'
figure
meshc(x,y,z)
view(-37, 15)

% genera la figura usando 'surfc'
figure
surfc(x,y,z)
view(-47, 25)

O ve la pagina http://www.matrixlab-examples.com/matlab-code-3.html para más detalles.

Saludos!
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

RE:graficas --> la solucion

Publicado por lucera (119 intervenciones) el 26/10/2009 20:13:49
vale!!! todo esto lo entiendo mi problema esque estos vectores son recogidos de una solucion qeu manda abaqus... entonces z aunqeu es dependiente de x e y no tengo la funcion de x e y sino los resultados!!!me explico?

es decir:

Z(x,y)=58.69; yo tengo el valor no la funcion!!!!!!!!!!!!!! y es un vector de igual magnitud que x y .

x representa la posicion x de cada nodo
y representa la posicion y de cada nodo
z son los despazamientos de cada nodo, calculados por abaqus!!!!!! el problema es que me gustaria que se representaria en 3 dimensiones ya que serían despalzamientos en z y se visualiza mejor
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

RE:graficas --> la solucion

Publicado por Jorge (226 intervenciones) el 26/10/2009 20:33:57
Ok.
Si tienes los valores, grafica los valores.

Pon esos valores en una matriz, y luego grafica esa matriz
x debe ser una matriz, no vector.
y debe ser una matriz, no vector.
z también, y luego plot3(x,y,z)

Por ello hay que hacer un meshgrid antes del plot3.
La instrucción 'meshgrid' hace que x e y sean matrices, partiendo de vectores.
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

RE:graficas --> la solucion

Publicado por lucera (119 intervenciones) el 26/10/2009 20:59:25
vale!!!

he probado, entonces convierto x en matriz y en matriz y z que son las tensiones tambien?

me da problema matlab yo creo que son muchisimos datos y mi ordenador (aunque es nuevo y tiene 4 gigas de memoria) no lo debe procesar bien...

he probado convirtiendo x e y en matrices y z tb, y tambien he probado (que tambien te lo admite las funciones surf y mesh ) en convertir solo el vector z (de resultados) en matriz y realizar las graficas.... pero me aparece un error muy raro y pense que asi no se hacia.

MUCHAS GRACIASSSSS
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

RE:graficas --> la solucion

Publicado por Jorge (226 intervenciones) el 26/10/2009 23:06:53
Fijate que x, y y z tengan las mismas dimensiones.
Si no, no se pueden graficar los datos y Matlab marca error.

Ahora bien, puedes muestrear los datos de manera que tengas matrices menores y los puedas graficar bien. Esto es, haz un pre-procesamiento antes de graficar.
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

RE:graficas --> la solucion

Publicado por lucera (119 intervenciones) el 27/10/2009 19:51:29
es decir, hacer un pre-procesamiento es hacer matrices de menor dimension? lo voy a probar!!! luego relizo varias graficas en la misma figura no?
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

RE:graficas --> LA SOLUCION

Publicado por Sander (14 intervenciones) el 03/06/2010 18:54:59
Estube leyendo todo lo ke hicieron ....
y estan mal hasta ahora .pero seguire leyendo haber si lo solucionaron su problema........ okey..........

pero segun lo ke lei ..........Lucera tiene "n" puntos con coordenadas (X, Y, Z) verdad..... es o es vaiado . Jorge estas mal al decir k generes tus puntos pork esos puentos no depende de la razon k le des .... sino son arbitrarios . son independientes de cada punto............
lo k se busca es hacer una triangulacion de todo los puntos en el espacion una ves reañoizado la triangulacion la superficie se puede ralizar sencillamente.......

email:

[email protected]
[email protected]
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