Como graficar una función matemática en MATLAB

Download PDF

Mientras estudié la carrera de ingeniería acústica en la Universidad Austral de Chile, tuve que realizar muchísimas gráficas funciones matemáticas en 2D y 3D, para trabajos e informes de los cursos de matemática y física en ingeniería acústica, que son la base para cálculos matemáticos más complejos para estudiar el problema del ruido en general: como ser modelos de propagación de ruido, aislamiento de ruido, interacción con barreras acústicas, entre otros. La matemática asociada a los problemas físico matemático son la base de los diversos algoritmos incluidos en software para modelaciones acústicas, y resulta útil el uso de la acústica computacional para resolver diversas situaciones.

Comparto aquí un script para realizar una gráfica de una función matemática en MATLAB, que ademas de graficar la función matemática, escribe la ecuación sobre la gráfica mediante sintaxis en codigo Latex y finalmente guarda un archivo pdf con la imagen de la función creada.

clear
clc
close all
 
x=[-100:1:100];
 
dim=get(0,'ScreenSize');
figure('position',[dim(1) dim(2) dim(3) dim(4)]);
 
 
y=(0.25)*x.*x;
plot(x,y)
axis([-100 100 -20 180])
daspect([1 1 1])
grid on
title('Grafica matemática')
xlabel('eje x')  % etiqueta para el nombre del eje x
ylabel('eje y')  % etiqueta para el nombre del eje y
 
 
str = '$$ y=(1/4)x^2 $$';
texto=text(55,120   ,str,'Interpreter','latex')
texto.FontSize = 14;
annotation('arrow','X',[0.65,0.55],'Y',[0.65,0.4])
 
 
 
 %% guardar archivos de imagenes de la grafica
 nc='imagenes_salida'   % nombre carpeta
 mkdir(nc)
 ruta=['./' nc '/']
 
 print(figure(1),[ruta 'imagen_de_datos_png'],'-dpng') % para guardar una imagen pixelada
 print(figure(1),[ruta 'imagen_de_datos_eps'],'-depsc')% para guardar una imagen vectorial (para latex)
 print(figure(1),[ruta 'imagen_de_datos_pdf'],'-dpdf')% para guardar una imagen en un documento pdf
 print(figure(1),[ruta 'imagen_de_datos_svg'],'-dsvg')% para guardar una imagen en svg (vectorial para web)
 
winopen(['./' nc '/imagen_de_datos_pdf.pdf'])

Pincha aqui para ver codigo latex para funciones matematicas de uso habitual.

Si requieres crear graficar una superficie matematica en 3D aqui una mejora al código original.

Figura 2: Imagen creada con la función SURF de MATLAB
clear
clc
close all
 
%x=[-100:1:100];
maximiza_imagen = false;

dim=get(0,'ScreenSize');


X=[-100:10:100];
Y=[-100:10:100];

[x y] = meshgrid(X,Y);

    if maximiza_imagen
    figure('position',[dim(1) dim(2) dim(3) dim(4)]);
    end
    figure(1)
    z = x.^2 + y.^2;
    mesh(z)
    title('Ejemplo funcion mesh')


    if maximiza_imagen
    figure('position',[dim(1) dim(2) dim(3) dim(4)]);
    end
    figure(2)
    z = x.^2 + y.^2;
    surf(z)
    title('Ejemplo funcion surf')


xx = [-100:1:100];
yy = [-100:1:100];
yy=(0.25)*xx.*xx;

    if maximiza_imagen
    figure('position',[dim(1) dim(2) dim(3) dim(4)]);
    end
    figure(3)
    plot(xx,yy)
    axis([-100 100 -20 180])
    daspect([1 1 1])
    grid on
    title('Grafica matemática')
    xlabel('eje x')  % etiqueta para el nombre del eje x
    ylabel('eje y')  % etiqueta para el nombre del eje y
 

str = '$$ y=(1/4)x^2 $$';
texto=text(55,120   ,str,'Interpreter','latex')
texto.FontSize = 14;
annotation('arrow','X',[0.65,0.55],'Y',[0.65,0.4])
 
 
 
 %% guardar archivos de imagenes de la grafica
 nc='imagenes_salida_1'   % nombre carpeta
 mkdir(nc)
 ruta=['./' nc '/']
  print(figure(1),[ruta 'imagen_de_datos_png'],'-dpng') % para guardar una imagen pixelada
 print(figure(1),[ruta 'imagen_de_datos_eps'],'-depsc')% para guardar una imagen vectorial (para latex)
 print(figure(1),[ruta 'imagen_de_datos_pdf'],'-dpdf','-bestfit')% para guardar una imagen en un documento pdf
 print(figure(1),[ruta 'imagen_de_datos_svg'],'-dsvg')% para guardar una imagen en svg (vectorial para web)
winopen(['./' nc '/imagen_de_datos_pdf.pdf'])
pause(1)
 nc='imagenes_salida_2'   % nombre carpeta
 mkdir(nc)
 ruta=['./' nc '/']
  print(figure(2),[ruta 'imagen_de_datos_png'],'-dpng') % para guardar una imagen pixelada
 print(figure(2),[ruta 'imagen_de_datos_eps'],'-depsc')% para guardar una imagen vectorial (para latex)
 print(figure(2),[ruta 'imagen_de_datos_pdf'],'-dpdf','-bestfit')% para guardar una imagen en un documento pdf
 print(figure(2),[ruta 'imagen_de_datos_svg'],'-dsvg')% para guardar una imagen en svg (vectorial para web)
 winopen(['./' nc '/imagen_de_datos_pdf.pdf'])
pause(1)

 nc='imagenes_salida_3'   % nombre carpeta
 mkdir(nc)
 ruta=['./' nc '/']
 print(figure(3),[ruta 'imagen_de_datos_png'],'-dpng') % para guardar una imagen pixelada
 print(figure(3),[ruta 'imagen_de_datos_eps'],'-depsc')% para guardar una imagen vectorial (para latex)
 print(figure(3),[ruta 'imagen_de_datos_pdf'],'-dpdf','-bestfit')% para guardar una imagen en un documento pdf
 print(figure(3),[ruta 'imagen_de_datos_svg'],'-dsvg')% para guardar una imagen en svg (vectorial para web)
 
winopen(['./' nc '/imagen_de_datos_pdf.pdf'])

pause(1)
The following two tabs change content below.

LEONARDO PARADA VALENCIA

INGENIERO ACÚSTICO Estudiante Magister en Gestión Ambiental Desarrollador de contenidos multimedia en www.ingenieriaacustica.cl EXPERTO EN RUIDO AMBIENTAL/OCUPACIONAL - PROTOCOLOS AMBIENTALES APLICADOS EN CHILE: DS38/11 Y PREXOR. EXPERTO EN DISEÑO SONORO Y MÚSICA PARA VIDEOJUEGOS