¿Datos invertidos en el trazado 3D?
Frecuentes
Visto 99 equipos
1
Estoy confundido por el trazado de un gráfico 3D. En primer lugar, la matriz para los ejes x e y se muestra a continuación.
x =
0 71 142 213 284 355 426
0 71 142 213 284 355 426
0 71 142 213 284 355 426
0 71 142 213 284 355 426
0 71 142 213 284 355 426
0 71 142 213 284 355 426
y =
0 0 0 0 0 0 0
71 71 71 71 71 71 71
142 142 142 142 142 142 142
213 213 213 213 213 213 213
284 284 284 284 284 284 284
355 355 355 355 355 355 355
y los datos se muestran a continuación.
Data =
16 16 16 27 29 24 21
17 17 15 26 29 16 16
15 13 12 25 34 14 15
12 10 9 28 18 11 11
77 9 6 62 7 9 8
4 4 4 131 3 4 6
Luego usé este código.
mesh(x,y,Data)
xlabel('x')
ylabel('y')
zlabel('Data')
Y obtuve este gráfico:
Lo que me confunde es por qué el punto de Data(6,4)=131 está en el punto (1,4) del gráfico. Además, puede ver que el punto de Data(5,1)=77 está en el punto (1,2) del gráfico. ¿Por qué la posición de cualquier punto en el gráfico se invierte en dirección arriba-abajo con la posición en la matriz? ¿Es esto algo normal? O, ¿hay algún problema en mi código?
Soy nuevo en Matlab, pero siento que esta trama invertida de arriba hacia abajo es extraña en mi sentido común.
(Editar) Gracias Dan, luego describiré por qué la forma exacta de los datos es importante para mí. Mi trabajo es medir algún parámetro específico, como la humedad, en una habitación. El resultado medido "espacialmente" se muestra "exactamente" a continuación.
16 16 16 27 29 24 21
17 17 15 26 29 16 16
15 13 12 25 34 14 15
12 10 9 28 18 11 11
77 9 6 62 7 9 8
4 4 4 131 3 4 6
Según los datos, la humedad en la dirección sur de la habitación es más alta (131). Sin embargo, cuando hago un gráfico en MATLAB, el punto 131 pasa a estar en la dirección norte del "Modelo matemático", como se muestra en el gráfico anterior. Entonces, se me hace difícil poner ese gráfico en un informe. Sé que puedo rotar el gráfico, pero si lo hago, el punto de origen se vuelve extraño y también causa otro problema inverso de izquierda a derecha. Puede decir que mi gráfico es matemáticamente correcto, pero aún así es extraño hacer un informe con este problema inverso. ¿Hay alguna manera de cumplir con esta tarea? He intentado invertir los datos en la dirección de arriba hacia abajo y de izquierda a derecha en la matriz, pero no ayuda.
1 Respuestas
1
El punto con valor 131
no está en el punto (1,4) en su gráfico sino en el punto xy (213,355) que es exactamente correcto. Todo lo que necesita hacer para obtener el sonido que desea es rotar la imagen... no hay nada malo aquí. Es muy sencillo rotar desde la ventana de la figura, o de lo contrario podría hazlo programáticamente muy
Respondido 12 Feb 14, 08:02
Gracias por su respuesta. Sí, puedo rotar el gráfico para que la posición del valor 131 esté en el lado inferior del gráfico al igual que en la matriz. La imagen está aquí. dl.dropboxusercontent.com/u/153995/prob2.tif Pero noté dos problemas en este gráfico. 1) Aunque el punto 131 está en la dirección adecuada, el punto 77 está invertido de izquierda a derecha en comparación con el 77 en la matriz. 2) Normalmente, el punto de x e y en el origen del gráfico debería ser 0,0 pero en el caso de este gráfico es 400,500. - Yossiri
Sí, pero no olvides que en tus datos, el y
los valores ascienden a medida que ascienden las filas, pero cuando se imprimen, las filas aumentan hacia abajo tu pantalla Entonces, su gráfico es correcto, en todo caso, está mirando sus matrices de datos al revés ... - Dan
Gracias Dan, agregué más información pero es difícil escribir mucho en un comentario adicional. Así que lo agregué a la pregunta principal. - Yossiri
voltea tu
Y
variable antes de llamar a la malla. es decirmesh(x,flipud(y),Data)
. Cuando trazas un gráfico, convencionalmente quieres que ely
eje para aumentar a medida que sube en el lado izquierdo. Pero eso es lo contrario de lo que hacen tus datos, aumentany
a medida que baja. Su gráfico es correcto como lo ha especificado, como dije, es suy
eso está mal. - DanMuchas gracias Dan. Por fin entendí. ¡¡Me ayudaste mucho!! - Yossiri