Graficación de datos experimentales en 3D: dispersión, superficie, malla y líneas de contorno

24 de junio de 2015

clear all;
clc;

% Ejemplo que indica cómo graficar un conjunto de puntos en 3D. Estos
% puntos pueden ser datos producto de un experimento de dos variables
% independientes (x, y en este ejemplo) y una variable dependiente (z en
% este ejemplo).
%
% En este caso vamos a utilizar una función z = x^2 + y^2 para generar los
% datos de prueba de la variable dependiente (z). Como se dijo anteriormente,
% estos datos no necesariamente deben venir de una función definida, sino
% que pueden ser datos de algún experimento. Por lo tanto, dichos datos
% podrían no estar linealmente espaciados (en el ejemplo, gracias a la
% generación de datos aleatorios con rand, los datos de las variables
% independientes no son linealmente espaciados).

% Generación de 150 datos aleatorios que constituyen los valores de las
% variables independientes. Estos puntos (x,y) son los que serán evaluados
% con la función de un paraboloide.
x=rand(150,1)*20-10;
y=rand(150,1)*20-10;

% Generamos los datos de la variable dependiente evaluando la función en
% los puntos datos por las variables x, y.
z=x.^2+y.^2;

% Graficación de los puntos (gráfica de dispersión) en 3D.
subplot(2,2,1); scatter3(x,y,z); title('Scatter 3D')

% Dado que los puntos generados no son linealmente espaciados. Encontramos
% una función de interpolación que pase por cada uno de los datos datos.
F=TriScatteredInterp(x,y,z);

% Generamos datos linealmente espaciados desde el límite inferior de los
% datos de x (min(x)) hasta el límite superior de y (max(x)).
xlin=linspace(min(x),max(x));
% Generamos datos linealmente espaciados desde el límite inferior de los
% datos de x (min(y)) hasta el límite superior de y (max(y)).
ylin=linspace(min(y),max(y));

% Generamos una rejilla de malla (matriz) de datos linealmente espaciados
% que serán utilizados para la evaluación de la función interpolada (F)
[X,Y]=meshgrid(xlin,ylin);

% Evaluación de los puntos de la malla con la función (F) producto de la
% interpolación.
Z=F(X,Y);

subplot(2,2,2); surf(X,Y,Z); title('Superficie: z = x^2 + y^2')
subplot(2,2,3); mesh(X,Y,Z); title('Malla: z = x^2 + y^2')
subplot(2,2,4); contour(X,Y,Z);

Figura 1: resultado final del programa.

Related Posts with Thumbnails