Académique Documents
Professionnel Documents
Culture Documents
Matlab Introducción
Taller No.2
Programación TE243
Ing: José Norbey Sánchez
Grupo:
MATLAB dispone de cuatro funciones básicas para crear gráficos 2-D. Estas funciones se
diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de
ordenadas. Estas cuatro funciones son las siguientes:
plot() Crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.
loglog() Ídem con escala logarítmica en ambos ejes.
semilogx() Ídem con escala lineal en el eje de ordenadas y logarítmica en el eje de abscisas.
semilogy() ïdem con escala lineal en el eje de abscisas y logarítmica en el eje de ordenadas.
En lo sucesivo se hará referencia casi exclusiva a la primera de estas funciones (plot). Las demás
se pueden utilizar de un modo similar. Existen además otras funciones orientadas a añadir
títulos al gráfico, a cada uno de los ejes, a dibujar una cuadrícula auxiliar, a introducir texto, etc.
Estas funciones son las siguientes:
fplot parcela una función entre los límites especificados
imread Lee la imagen de una fila especificada
imshow Muestra la imagen de una fila especificada
linspace Genera n puntos entre un intervalo definido
title('título') Añade un título al dibujo.
xlabel('tal') Añade una etiqueta al eje de abscisas. Con xlabel off desaparece.
ylabel('cual') Añade una etiqueta al eje de ordenadas. Con ylabel off desaparece
text(x,y,'texto') Introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y
son: vectores, el texto se repite por cada par de elementos. Si texto es
también un vector de cadenas de texto de la misma dimensión, cada
elemento se escribe en las coordenadas correspondientes.
gtext('texto') Introduce texto con ayuda del ratón: el cursor cambia de forma y se
espera un clic para introducir el texto en esa posición.
1
legend() define rótulos para las distintas líneas o ejes utilizados en la figura. Para
más detalle, consultar el Help grid activa la inclusión de una cuadrícula en
el dibujo. Con grid off desaparece la cuadrícula.
t=0:pi/100:2*pi;
seno=sin(t);
plot(t,seno)
Ejemplo: También se graficar punteando dos vectores m y t que tengan la misma dimensión:
Si queremos cambiar color o delineado de la curva escribimos plot(t,m,’r’) para color rojo, otros
colores como y(amarillo), g(verde), w(blanco) y k(negro); si se digita plot(t,m,’r--’), aparece la
curva punteada, otras formas .,+,*,o,:, etc. También se puede colocar etiquetas a la curva con
los comandos: xlabel(‘t(segundos)’) y ylabel(‘m(amperios)’), se adiciona el texto entre comillas
simples a los ejes x y y respectivamente como se muestra en la siguiente figura.
2
Ejemplo: graficar la función anterior y colocarle etiquetas
Ejemplo: ampliar los ejes en ([-4 -2 8 14]) y escribir en la gráfica “curva ilustrativa”
3
Se pueden hacer lecturas directamente de la curva mediante el comando ginput, ejemplo como
tomar dos lecturas de la curva: [x,y]=ginput(2)
En caso de necesitarse dibujar un gráfico adicional sobre la misma gráfica anterior se usa el
comando hold on. Por ejemplo para superponer dos funciones:
Ejemplo: generar dos vectores de 9 datos, graficar y luego superponerle una función seno
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
plot(t,m)
4
A la gráfica anterior le superponemos una función seno con hold on.
hold on;
t=0:pi/100:2*pi;
seno=sin(t);
plot(t,seno)
Las dos gráficas anteriores podrían mostrarse en dos subgráficas una debajo de la otra y
separadas por fila, pertenecientes a una misma ventana, usando el comando subplot(m,n,p), se
genera una matriz de m filas y n columnas, y p genera los ejes de cada gráfica.
Ejemplo: generar las dos gráficas anteriores por fila en una misma ventana
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
subplot(2,1,1)
plot(t,m)
5
xlabel('t(segundos)')
ylabel('m(tensión)')
t=0:pi/100:2*pi;
subplot(2,1,2)
seno=sin(t);
plot(t,seno)
xlabel('t(segundos)')
ylabel('m(amperios)')
Los comandos axis, xlabel, ylabel etc., se digitan después del respectivo plot para colocar
etiquetas. Usando el comando subplot(m,n,p), donde se genera una matriz de m filas y n
columnas, y p genera los ejes de cada gráfica.
Ejemplo: generar las dos gráficas anteriores por columna en una misma ventana
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
subplot(1,2,1)
plot(t,m)
xlabel('t(segundos)')
ylabel('m(tensión)')
t=0:pi/100:2*pi;
subplot(1,2,2)
seno=sin(t);
plot(t,seno)
xlabel('t(segundos)')
ylabel('m(amperios)')
6
Con la función linspace genera n puntos entre un intervalo definido de una función
Ejemplo generar la grafica de la siguiente función definida entre [-2,3].
clc
x=linspace(-2,3,3000);
% divide el intervalo [-2,3] en 3000 partes.
y=exp(-x);
% imágenes de las componentes de x
plot(x,y)
grid on
title('función exponencial')
% gráfica de la curva.
7
Existe otra forma de graficar una función en un solo paso con fplot, parcela una función entre
los límites especificados.
Ejemplo:
fplot('exp(-x)',[-2,3])
Crear una imagen: para colocar una imagen en un display, se selecciona una imagen de pocos
pixeles (fotografía, etc.), con extensión (TIFF, JPEG, GIF, BMP, PNG, XWD), se guarda en la
carpeta de Matlab que se encuentra en mis documentos o en el escritorio se crea una carpeta y
se guarda allí.
Crear una función a trozos: con la función linspace, creamos una función a trozos o por partes
con extensión .m y se guarda junto en carpeta donde se encuentra la imagen.
Ejemplo: Diseñar un programa en Matlab que grafique la siguiente función a trozos y que
muestre la siguiente imagen.
clc
%seleccionamos la imagen y la guardamos en una carpeta
f = imread('imagenm1.png');
%luego se crea una imagen interactiva con la siguiente función
g=imcrop(f);
imshow(g) %y finalmente muestra la imagen
%Para graficar la función a trozos, seguimos los siguientes pasos:
x=linspace(-2,3,3000);
% divide el intervalo [-2,3] en 3000 partes.
y=(x.^2).*(x<0)+2.*((0<=x)&(x<1))+(-x+3).*(1<=x);
%evalúa f usando índice lógico
plot(x,y)
grid on
8
Ejemplo: realizar el ejemplo anterior mostrando a través del comando subplot la ‘imagen’ y la
‘función’ ya sea por fila o por columna en un mismo display.
9
2.2 Gráficos en tres dimensiones
Para construir gráficos en tres dimensiones primero se construye la superficie que representa la
magnitud de una función de dos variables; las dos variables se representan en el plano
horizontal y el valor de la función como una altura sobre dicho plano. La superficie se forma al
unir las pequeñas rejillas implementadas alrededor de cada punto. Los comandos utilizados
para graficar superficies son: mesh, meshz, meshc, surf, surfc. A través de algunos ejemplos se
ilustrará la operación de los comandos y de otras utilidades adicionales.
10
Si deseamos agregar otro plano al mismo grafico en tres dimensiones, escribimos lo siguiente:
En la figura anterior, se observa la diferencia entre mesh y surf. El comando surf presenta
dificultades cuando el número de puntos es grande; se pueden apreciar los problemas
repitiendo el proceso anterior con un incremento para x1 de 0.1 en lugar del 0.5 utilizado, por lo
que se recomienda utilizar preferentemente mesh. Se aprecia también que se está graficando
contra el índice, para graficar directamente contra los ejes especificados debe digitarse lo
siguiente:
Ejemplo: Diseñar un programa en Matlab, que muestre tres planos en tres dimensiones con surf
y mesh y mostrar los ejes especificados.
clc
x=-5:0.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z1=0*x1;
surf(x,y,z1)
hold on
mesh(x,y,z2)
mesh(x,y,z2+10)
11
En la gráfica se observa adicionalmente todos los ejes especificados axis([-5 5 -5 5 0 30]).
Ejemplo: Diseñar un programa en Matlab que generar un plano en tres dimensiones con ejes y
curvar su altura a través de una función.
clc
x=-5:.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z4=1./(x1.^2+1);
mesh(x,y,z4)
Ejemplo: Diseñar un programa en Matlab que grafique en tres dimensiones la siguiente función
con los siguiente limites: -8:0.5:8.
sin( r ) / r , donde r u 2 v 2
Utilizando el comando mesh, y para evitar dividir por cero, se utiliza el comando eps que es un
espaciamiento de números de punto flotante, y permite hacer divisiones por valores de casi
cero sin que entre en un ciclo infinito la función.
12
clc
u=-8:0.5:8; v=u;
[U,V]=meshgrid(u,v);
R=sqrt(U.^2+V.^2)+eps;
W=sin(R)./R;
mesh(W)
Otra forma de generar gráficos en tres dimensiones es con la función plot3(x,y,z), donde se
tienen los vectores x, y y z, entonces para generar la gráfica solo es necesario teclear el punto de
coordenadas cartesianas y luego los enlaza por segmentos para generarlo en 3-D.
Ejemplo: Diseñar un programa en Matlab, que genere una gráfica tridimensional de una
helicoidal con la función plot3.
clc
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axis square;
grid on
El comando axis permite fijar los límites de los ejes en una gráfica y la opción square fija las
coordenadas iguales en los tres ejes. En la siguiente figura se muestra la gráfica resultante.
13
TALLER No.2 PARA RESOLVER EN MATLAB
1) Graficar una función diente de sierra uniforme y superponerle las funciones seno y
coseno y colocarles etiquetas (title, xlabel, ylabel)
2) Obtener 4 gráficas en un mismo display y colocarle etiquetas (title, xlabel, ylabel).
A- Primero mostrar las graficas por filas.
B- Segundo mostrar las graficas por columnas de:
- una función diente de sierra uniforme
- una función tangente
- una función constante
- pendiente positiva
3) Ejercicio: diseñar un programa en Matlab que grafique dos funciones a trozos en un
mismo display, y que además muestre los gráficos de los tramos de las funciones
literalmente, utilizando los comandos subplot y con subtitulos (title, xlabel, ylabel),
las siguientes dos funciones a trozos.
cos(k ) / k , donde k x2 y2
14