Main Content

Representar datos como una superficie

Funciones para trazar cuadrículas de datos

gráficos define una superficie por las coordenadas de los puntos por encima de una rejilla rectangular en el plano.MATLAB®zxy La trama se forma uniendo puntos adyacentes con líneas rectas. Las parcelas de superficie son útiles para visualizar matrices que son demasiado grandes para mostrarse en forma numérica y para funciones gráficas de dos variables.

puede crear diferentes formas de trazados de superficie.MATLAB Los trazados de malla son superficies de marco de alambre que colorearan solo las líneas que conectan los puntos definitorios. Los trazados de superficie muestran las líneas de conexión y las caras de la superficie en color. Esta tabla enumera los diversos formularios.

Función

Se utiliza para crear

,meshsurf

La gráfica de superficie

,meshcsurfc

Parcela de superficie con trazado de contorno debajo de ella

meshz

Trazado de superficie con trazado de muro cortina (plano de referencia)

pcolor

Parcela de superficie plana (el valor es proporcional sólo al color)

surfl

Superficie gráfica iluminada desde la dirección especificada

surface

Función de bajo nivel (en la que se basan funciones de alto nivel) para crear objetos de gráficos de superficie

Funciones para Gridding e interpolando datos

Estas funciones son útiles cuando necesita reestructurar e interpolar datos para que pueda representar estos datos como una superficie.

Función

Se utiliza para crear

meshgrid

Rejilla rectangular en espacio en 2-D y 3-D

griddata

Interpolar datos dispersos

griddedInterpolant

Interpolante para datos cuadriparados

scatteredInterpolant

Interpolar datos dispersos

Para ver una explicación sobre cómo interpolar datos, vea y.Interpolating Gridded DataInterpolating Scattered Data

Parcelas de malla y superficie

El ymeshsurf comandos crean parcelas de superficie 3D de datos de matriz. Si es una matriz para la que los elementos definen la altura de una superficie sobre una rejilla subyacente,ZZ(i,j)(i,j)

mesh(Z) 

genera una vista de trama de alambre de color de la superficie y la muestra en una vista 3D. Semejantemente

surf(Z) 

genera una vista faceteada de color de la superficie y la muestra en una vista 3D. Normalmente, las facetas son cuadriláteales, cada uno de los cuales es un color constante, delineado con líneas de malla negras, pero el comando le permite eliminar las líneas de malla () o seleccionar el sombreado interpolado a través de la faceta ().shadingshading flatshading interp

Las propiedades del objeto de superficie proporcionan un control adicional sobre la apariencia visual de la superficie. Puede especificar estilos de línea de arista, marcadores de vértice, color de cara, características de iluminación, etcétera.

Visualizando funciones de dos variables

  1. Para mostrar una función de dos variables, = (), genere y matrices consistentes en filas y columnas repetidas, respectivamente, sobre el dominio de la función.zfx,yXY Utilizará estas matrices para evaluar y graficar la función.

  2. elmeshgrid función transforma el dominio especificado por dos vectores y, en matrices y.xyXY A continuación, utilice estas matrices para evaluar funciones de dos variables: Las filas de son copias del vector y las columnas de son copias del vector.XxYy

Ejemplo 1. Ejemplo: ilustrar el uso de meshgrid

Para ilustrar el uso de, tenga en cuenta la o función.meshgridsin(r)/rsinc Para evaluar esta función entre-8 y 8 en ambos y, necesita pasar sólo un argumento vectorial a, que luego se utiliza en ambas direcciones.xymeshgrid

[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; 

La matriz contiene la distancia desde el centro de la matriz, que es el origen.R La adición impide la división por cero (en el paso siguiente) que produceepsInf valores de los datos.

Formando la función y trazando con resultados en la superficie 3D.sincZmesh

Z = sin(R)./R; figure mesh(X,Y,Z) 

Eliminación de línea oculta

De forma predeterminada, elimina las líneas ocultas de la vista en trazados de malla, aunque las caras del trazado no se rellenen.MATLAB Puede desactivar la eliminación de líneas ocultas y permitir que las caras de una gráfica de malla sean transparentes con el comando:hidden

hidden off

Enfatizando la forma de superficie

proporciona una serie de técnicas que pueden mejorar el contenido de la información de sus gráficos.MATLAB Por ejemplo, este gráfico de la función utiliza los mismos datos que el gráfico anterior, pero emplea iluminación, ajustes de vista y un mapa de colores diferente para enfatizar la forma de la función grafiada (,,,).sincdaspectaxisviewcamlight

figure colormap hsv surf(X,Y,Z,'FaceColor','interp',...    'EdgeColor','none',...    'FaceLighting','gouraud') daspect([5 5 1]) axis tight view(-50,30) camlight left 

Consulte la función para obtener más información sobre los trazados de superficie.surf

Parcelas de superficie de datos muestreados no uniformemente

Puede utilizar para crear una rejilla de puntos de datos muestreados uniformemente en los que evaluar y graficar la función. a continuación, construye la gráfica de superficie conectando elementos de matriz adyacentes para formar una malla de cuadriláteales.meshgridsincMATLAB

Para producir una gráfica de superficie a partir de datos muestreados de forma no uniforme, utilice para interpolar los valores en puntos con espaciado uniforme y, a continuación, utilice y de la forma habitual.scatteredInterpolantmeshsurf

Ejemplo: Mostrar datos no uniformes en una superficie

éste ejemplo evalúa la función en puntos aleatorios dentro de un intervalo específico y, a continuación, genera datos muestreados uniformemente para mostrarlos como una gráfica de superficie.sinc El proceso involucra estas tareas:

  • Usolinspace para generar valores espaciados uniformemente sobre el rango de los datos muestreados de forma desigual.

  • Se usa para generar la cuadrícula de trazado con la salida de.meshgridlinspace

  • UsoscatteredInterpolant para interpolar los datos muestreados irregularmente a la cuadrícula espaciada regularmente devuelta por.meshgrid

  • Utilice una función de trazado para visualizar los datos.

  1. Genere datos muestreados de manera desigual dentro del rango [-8, 8] y utilírelos para evaluar la función:

    x = rand(100,1)*16 - 8; y = rand(100,1)*16 - 8; r = sqrt(x.^2 + y.^2) + eps; z = sin(r)./r; 
  2. el función proporciona una forma cómoda de crear datos espaciados uniformemente con el número deseado de elementos.linspace Las siguientes instrucciones producen vectores sobre el rango de los datos aleatorios con la misma resolución que la generada por la instrucción-8:. 5:8 en el ejemplo anterior:sinc

    xlin = linspace(min(x),max(x),33); ylin = linspace(min(y),max(y),33); 
  3. Ahora utilice estos puntos para generar una rejilla uniformemente espaciada:

    [X,Y] = meshgrid(xlin,ylin); 
  4. La clave de este proceso es utilizar para interpolar los valores de la función en los puntos espaciados uniformemente, en función de los valores de la función en los puntos de datos originales (que son aleatorios en este ejemplo).scatteredInterpolant Esta instrucción utiliza la interpolación lineal predeterminada para generar los nuevos datos:

    f = scatteredInterpolant(x,y,z); Z = f(X,Y);
  5. Graficar los datos interpolados y no uniformes para producir:

    figure
    mesh(X,Y,Z) %interpolated
    axis tight; hold on
    plot3(x,y,z,'.','MarkerSize',15) %nonuniform
    

Remodelar datos

Supongamos que tiene una colección de datos con los siguientes tripletes (X, Y, Z):

XYZ
11152
2189
31100
41100
51100
12103
220
32100
42100
52100
1389
2313
33100
43100
53100
14115
24100
34187
44200
54111
15100
2585
35111
4597
5548

Puede representar datos que se encuentran en forma vectorial utilizando varios tipos de gráficos, como, y, primero, reestructurando los datos.MATLABsurfcontourstem3 Utilice los valores (X, Y) para definir las coordenadas en un plano X-y en el que hay un valor Z. Las funciones y pueden reestructurar los datos para que los tripletes (X, Y, Z) formen una rejilla rectangular:reshapetranspose

x = reshape(X,5,5)'; y = reshape(Y,5,5)'; z = reshape(Z,5,5)';

Remodelar los resultados en tres matrices de 5-por-5:

x =       1     2     3     4     5      1     2     3     4     5      1     2     3     4     5      1     2     3     4     5      1     2     3     4     5  y =       1     1     1     1     1      2     2     2     2     2      3     3     3     3     3      4     4     4     4     4      5     5     5     5     5  z =     152    89   100   100   100    103     0   100   100   100     89    13   100   100   100    115   100   187   200   111    100    85   111    97    48

Ahora puede representar los valores de Z con respecto a X e y. Por ejemplo, cree un gráfico de tallo 3 – D:

stem3(x,y,z,'MarkerFaceColor','g')

Superficies paramétricas

Las funciones que dibujan superficies pueden tomar dos argumentos vectoriales o de matriz adicionales para describir superficies con datos y específicos.xy Si es una-por-matriz, es un vector, y es un vector, entoncesZmnxny m

mesh(x,y,Z,C) 

describe una superficie de malla con vértices que tienen color y se encuentra en los puntosC(i,j)

(x(j), y(i), Z(i,j)) 

donde corresponde a las columnas de y a sus filas.xZy

Más generalmente, si,, y son matrices de las mismas dimensiones, entoncesXYZC

mesh(X,Y,Z,C) 

describe una superficie de malla con vértices que tienen color y se encuentra en los puntosC(i,j)

(X(i,j), Y(i,j), Z(i,j)) 

éste ejemplo utiliza coordenadas esféricas para dibujar una esfera y colorearla con el patrón de ventajas y desventajas en un Hadamard matriz, una matriz ortogonal utilizada en la teoría de codificación de procesamiento de señales. Los vectores y están en el rango π ≤ ≤ π y π ≤ ≤ π.thetaphi-theta-/2phi/2 Porque es un vector de fila y es un vector de columna, las multiplicaciones que producen las matrices, y son productos externos vectoriales.thetaphiXYZ

figure k = 5; n = 2^k-1; theta = pi*(-n:2:n)/n; phi = (pi/2)*(-n:2:n)'/n; X = cos(phi)*cos(theta); Y = cos(phi)*sin(theta); Z = sin(phi)*ones(size(theta)); colormap([0 0 0;1 1 1]) C = hadamard(2^k);  surf(X,Y,Z,C) axis square