16/12/2009
Recuperar la función matemática que representa una gráfica en MATLAB puede ser crucial para análisis posteriores o para comprender el comportamiento de los datos. Si bien no siempre es posible obtener la función exacta, especialmente con datos ruidosos o complejos, existen métodos para aproximar la función subyacente o extraer datos de la gráfica para su posterior análisis.

Métodos para obtener información de una gráfica en MATLAB:
Existen varias situaciones que nos llevan a necesitar extraer información de una gráfica en MATLAB. La más común es cuando se tiene una figura guardada (.fig) pero no se conserva el código fuente que la generó. En otras ocasiones, se necesita extraer los datos para un análisis posterior o para generar una nueva gráfica con modificaciones.
Extracción de Datos desde un archivo .fig:
Si tienes una gráfica guardada como un archivo .fig, puedes extraer los datos de la gráfica utilizando las siguientes funciones de MATLAB:
- Abrir la Figura: Abre el archivo .fig usando el comando
open 'nombre_de_archivo.fig'
o haciendo doble clic en el archivo. - Obtener el Handle de los Ejes: Utiliza la función
gcf
(get current figure) para obtener el handle de la figura y luegogca
(get current axes) para obtener el handle de los ejes de la gráfica. Esto te proporciona una referencia a los objetos que contienen los datos. - Extraer los Datos X, Y y Z: Una vez que tienes el handle de los ejes, puedes acceder a los datos utilizando la función
get
. Para la mayoría de las gráficas 2D, necesitarásXData
eYData
. Si es una gráfica 3D, también necesitarásZData
. El código sería similar a esto:
h = gcf; % Handle de la figuraaxesHandle = gca; % Handle de los ejeschildren = get(axesHandle, 'Children'); % Obtener los objetos hijos (líneas, puntos, etc.)xData = get(children, 'XData'); % Extraer los datos XyData = get(children, 'YData'); % Extraer los datos Y% Para gráficas 3D:zData = get(children, 'ZData'); % Extraer los datos Z
Nota importante: get(children, 'XData')
puede devolver un array de celdas si la gráfica contiene múltiples objetos. En este caso, tendrás que acceder a cada celda individualmente para obtener los datos de cada objeto.
Aproximación de la Función a partir de los Datos:
Una vez que has extraído los datos XData
e YData
, puedes utilizar diferentes técnicas de MATLAB para aproximar la función matemática que representa la gráfica. Algunas opciones populares incluyen:
- Polinomios de Interpolación: Funciones como
polyfit
te permiten ajustar un polinomio a los datos. El grado del polinomio determinará la precisión del ajuste, pero un grado demasiado alto puede llevar al sobreajuste. - Interpolación Espline: Los splines ofrecen una mejor aproximación que los polinomios, especialmente para datos con cambios bruscos de pendiente. Utiliza funciones como
spline
ointerp1
. - Ajuste de Curvas (Curve Fitting Toolbox): La Curve Fitting Toolbox de MATLAB proporciona una interfaz gráfica y funciones avanzadas para ajustar diferentes tipos de funciones a los datos, incluyendo funciones no lineales y modelos paramétricos.
- Regresión Lineal o No Lineal: Si sospechas que la relación entre las variables es lineal o se puede aproximar a una función lineal, utiliza funciones de regresión. Para relaciones no lineales, puedes explorar métodos de regresión no lineal.
Consideraciones Adicionales:
- Ruido en los Datos: Si los datos contienen ruido significativo, puede ser necesario aplicar técnicas de filtrado antes de intentar ajustar una función. La calidad del ajuste dependerá en gran medida de la calidad de los datos.
- Tipo de Gráfica: El método para extraer datos dependerá del tipo de gráfica (línea, dispersión, barras, etc.). Para gráficas complejas, puede ser necesario un análisis más detallado de la estructura de datos de la figura.
- Múltiples Objetos en la Gráfica: Si la gráfica contiene múltiples curvas o conjuntos de datos, deberás iterar a través de los objetos hijos del eje para extraer los datos de cada uno.
- Gráficas con Escalas No Lineales: Si los ejes tienen escalas logarítmicas o no lineales, tendrás que tener en cuenta esta información al analizar los datos y ajustar la función.
Ejemplo de Aproximación con polyfit:
Supongamos que has extraído los datos xData
e yData
. Puedes ajustar un polinomio de grado 2 usando polyfit
:
p = polyfit(xData, yData, 2); % Ajusta un polinomio de grado 2x = linspace(min(xData), max(xData), 100); % Crea una secuencia de valores xy = polyval(p, x); % Calcula los valores y correspondientes al polinomioplot(x, y); % Grafica el polinomio ajustado
Este código ajusta un polinomio de segundo grado a los datos y luego grafica el polinomio ajustado. Puedes experimentar con diferentes grados de polinomio para obtener el mejor ajuste posible.
Consultas Habituales:
Aquí te presento algunas consultas habituales relacionadas con la extracción de funciones de gráficas en MATLAB:
- ¿Cómo extraer datos de una gráfica de dispersión? Sigues el mismo procedimiento descrito anteriormente, usando
gca
para obtener el handle de los ejes yget
para extraerXData
eYData
. - ¿Cómo manejar gráficas con múltiples curvas? Debes acceder a cada objeto hijo de los ejes (
get(gca, 'Children')
) individualmente y extraer los datos de cada uno. - ¿Qué hacer si los datos están en una escala logarítmica? Antes de ajustar una función, debes transformar los datos a una escala lineal usando funciones como
log10
olog
, y luego realizar el ajuste. Después, puedes transformar la función resultante de vuelta a la escala logarítmica si es necesario. - ¿Cómo obtener la ecuación de la función ajustada? Las funciones de ajuste de curvas (como
polyfit
) devuelven los coeficientes de la función. Puedes usar estos coeficientes para construir la ecuación de la función ajustada.
Recuerda que la capacidad de obtener la función exacta depende de la naturaleza de los datos y de la complejidad de la relación entre las variables. En muchos casos, una aproximación razonable es suficiente para el análisis y la comprensión de los datos.