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);
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. |