Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
C O N T E N I D O
I. Objetivo
II. Antecedentes
IV.Desarrollo de la Práctica
V. Hoja de Resultados
VI. Anexo
I. Objetivo
Al finalizar la práctica el estudiante utilizará los comandos básicos de MATLAB para el manejo de
funciones de transferencia, para graficar funciones así como para el análisis de sistemas de control.
II. Antecedentes
El estudiante deberá contar con conocimientos matemáticos relativos a los cursos de Álgebra,
Ecuaciones Diferenciales, conocer el manejo matemático de los sistemas lineales invariantes en el
tiempo así como las bases de la solución numérica de problemas matemáticos. Deberá contar con
conocimientos básicos de programación en algún lenguaje de alto nivel. Se recomienda que cuente
con una computadora con la versión R2007a de MATLAB.
IV.1 Introducción
MATLAB es el nombre abreviado de “MATriz LABoratory”. MATLAB es un programa para
realizar cálculos númericos con vectores y matrices. Como caso particular puede también trabajar
con números escalares –tanto reales como complejos-, con cadenas de caracteres y con otras
estructuras de información complejas. Una de las capacidades más atractivas es la de realizar una
variedad de gráficos en dos y tres dimensiones, tiene también un lenguaje de programación propio.
La capacidad de cálculo de MATLAB se basa en sus múltiples funciones (comandos). En esta
práctica se mostrará la utilidad de algunas de ellas.
MATLAB es un gran programa de cálculo técnico y científico. Para ciertas operaciones es muy
rápido, cuando puede ejecutar sus funciones en código nativo con los tamaños más adecuados para
aprovechar sus capacidades. En otras aplicaciones resulta bastante más lento que el código
equivalente desarrollado en C/CC++ o Fortran. MATLAB dispone de un código básico y de varias
librerías especializadas (toolboxes).
Por lo que, además de los análisis teóricos en la enseñanza del control automático, será necesario
mostrar al alumno el manejo adecuado de “matlab” con el fin de complementar su formación en lo
que respecta a las soluciones numéricas y de simulación.
IV.2 Iniciando
Para iniciar el programa haga un doble clic sobre el icono (MATLAB R2008a) del programa. Al abrir
MATLAB hay una pantalla con tres ventanas (figura 1). Esta es la vista que se obtiene eligiendo la
opción Desktop / Layout / Default, en la barra de herramientas. Como esta configuración puede ser
cambiada fácilmente por el usuario, es posible que en muchos casos aparezca muy diferente.
La parte más importante de la ventana inicial es la Command Window, que aparece en la parte
derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB, a continuación del
prompt (aviso) caracterìstico (>>), que indica que el programa está listo para recibir instrucciones.
La primera ventana de la izquierda, es la ventana de arranque Current Directory, en donde se
muestran los archivos del directorio activo actual, haciendo doble clic sobre alguno de los archivos
*.m se abre el editor de archivos de MATLAB. Se puede alternar con Workspace haciendo clic en la
pestaña correspondiente, contiene la información sobre todas las variables que se hayan definido en
la sesión.
La segunda ventana a la izquierda Command History muestra los últimos comandos ejecutados en
la Command Window. Estos comandos se pueden volver a ejecutar haciendo doble clic sobre ellos.
Haciendo clic sobre un comando con el botón derecho del ratón se muestra un menú contextual con
las posibilidades disponibles en ese momento. Para editar uno de estos comandos hay que copiarlo
antes a la ventana Command Window.
Es posible recuperar comandos anteriores de MATLAB y moverse por dichos comandos con el ratón
y con las flechas ↑ y ↓. Al pulsar la primera de dichas flechas aparecerá el comando que se había
introducido inmediatamente antes. De modo análogo es posible moverse sobre la línea la línea de
comandos con las flechas ← y →, ir al principio de la línea con la tecla Inicio, al final de la línea
con Fin, y borrar toda la línea con Esc. Recordar que sólo hay una línea activa (la última).
Para salir de MATLAB cuando sea pertinente use los comandos quit o exit, elegir Exit MATLAB en
el menú File o utilizar cualquiera de los medios de terminar una aplicación en Windows.
Para borrar todas las salidas anteriores de MATLAB y dejar limpia la Command Window se puede
utilizar las funciones clc y home. La función clc (clear console) elimina todas las salidas anteriores,
mientras que home las mantiene, pero lleva el prompt (>>) a la primera línea de la ventana.
MATLAB dispone del comando hepl con el que se puede encontrar la información que se desee.
>> diary
>> x=10;y= x*57 % Contenido agregado al diario%
>> diary
Con el explorador de Windows abra nuevamente en archivo sesion. ¿Describa su contenido?, ¿qué
utilidad puede tener el comando diary?
El archivo tiene los comandos ejecutados anteriormente más las nuevas asignaciones de x y de y.
De esta forma es posible almacenar un registro de todos los comandos usados, para después editar o
visualizar estos.
load numeros
whos
A,B,C
Introduzca la siguiente línea. clear A -Para borrar una (A) de las variables del espacio de trabajo.
whos – Para verificar que la variable borrada no aparezca en el espacio de trabajo. Deberá aparecer
una lista de variables sin la que se acaba de borrar.
load numeros – Para cargar las variables guardadas por save en el archivo variables.
whos – Observar la lista y verificar que la variable borrada reapareció.
IV.4 Matlab como calculadora
Los operadores matemáticos básicos son: + (suma), - (resta), * (multiplicación), / (división), y ^
(potenciación)
a). Introduzca la siguiente operación. >> 2 + 3/4*5 con lo que obtendrá
ans = 5.7500
b). matlab sigue las siguientes prioridades (compruébelas introduciendo las operaciones indicadas
después del promt):
1. Cantidades entre paréntesis, por ejemplo: 2 + (3+4) = 2 + 7 = 9.
2. Potencias, esto es: 2 + 3^2 = 2 + 9 = 11
3. * /, De izquierda a derecha: 8/2*3 = 4*3 = 12
4. + -, De izquierda a derecha 5 – 3 + 7 = 2 +7 = 9
IV.5 Variables
La sintaxis general de MATLAB es la siguiente:
El programa MATLAB hace diferencia entre mayúsculas y minúsculas.
En matlab se pueden crear y modificar variables con la siguiente estructura: escalar, vector, matriz y
cadenas.
a) Defina las siguientes variables escalares R, L y C, asignándoles los siguientes valores
>> R=220; C=0.33e-6; L=20e-3; con éstos comandos se asigna el valores numéricos a las
variables R, C y L.
Ejecute la siguiente línea de comando >> whos; describa el resultado mostrado en la pantalla
Los nombres válidos para las variables deben iniciar con una letra y pueden ser cualquier
combinación de letras y caracteres alfanuméricos, sin espacios. Se debe decir, en éste punto, que
existen algunos nombres sólo utilizados por matlab, como el número pi, eps, y la variable imaginaria
(i y j).
Introduzca la siguiente línea, después del promt: >> sin(0.5236), deberá obtener como resultado ans
= 0.5
Introduzca la siguiente línea, después del promt: >>cos(1.0472), deberá obtener como resultado ans =
0.5
Las funciones sqrt, exp, log, log10 son algunas otras de las funciones que puede ejecutar matlab.
Introduzca la siguiente línea, después del promt: >> x = 9, sqrt(x), exp(x), log(sqrt(x)), log10(x^2+6)
, deberá obtener los siguientes resultados parciales (presentados en forma vertical): 3, 8.1031e+03,
1.0986, 1.9395.
Matriz
El tamaño de una matriz se especifica por el número de renglones y de columnas; así, es una
matriz de 3x3. Un dato de una matriz se puede identificar por los subíndices; así representa el
dato 90 de la matriz , si una matriz contiene m renglones y n columnas, entonces contiene un total
de m x n valores; así, es una matriz de tamaño 3x3.
ESTILO
Matlab es sensible a la diferencia entre mayúsculas y minúsculas, así que los nombres “Dato, DATO
y dato” representan tres variables distintas.
W =[1 34 90
59 12 67
22 -9 37]
PUNTOS SUSPENSIVOS Si hay demasiados números en un renglón de una matriz para que
quepan en una línea, podemos continuar la instrucción en la siguiente línea, pero se requiere una
coma y tres puntos al final de la línea para indicar que la renglón debe continuar.
Ejemplo:
H=[-2,0,-3,4,-3,-4,5,0,0,2,1,1,1,3,4,-0.2]
También podemos modificar los valores de una matriz o agregar valores adicionales usando una
referencia a un lugar específico. Por ejemplo:
D(3) = 6 Cambia el tercer valor de la matriz D del valor 4.1 por 6, para quedar como:
D = [-4,1.5,6]
Así también logramos extender una matriz definiendo nuevos elementos.
Si ejecutamos el siguiente comando
D(4)=2.5; La matriz D tendrá cuatro valores en lugar de tres, así D se verá como
3.- E=[3,5,10,0;0,0,...
0,3;3,9,9,8] % La coma y tres puntos para continuar la línea.
4.- T=[4,24,9]
Si se usa el operador dos puntos para separar dos enteros, el operador de dos puntos generara todos
los enteros entre los dos enteros especificados.
También se usa el operador dos puntos para separar tres números, el operador de dos puntos generará
valores entre el primer número y el tercero, usando el segundo número como incremento:
r =15:-1:0
C= [1, 2, 3; 4, 2, 5];
D = ones(size(C))
a*b
a+c
La suma de un escalar a un vector o matriz sólo añade el escalar a cada elemento del vector o matriz
la resta se define de manera similar:
a-b
Los vectores y matrices se suman (o restan) como lo hacemos en matemáticas, esto es, los dos
vectores o matrices deben tener la misma forma para sumarse o restarse a menos que uno de ellos sea
un matriz de 1*1, un escalar, como lo vimos antes:
b+c
c-b
Los vectores y las matrices se multiplican de acuerdo a las reglas del álgebra matricial:
b*c
Este resultado ilustra un error común en Matlab. Las matrices deben ser conformables para ser
multiplicadas utilizando el operador *. La premultiplicación de un vector renglón de 1x3 como c por
un vector renglón de 1x3 como b no está definida. Sin embargo si c se transpusiera a un vector
columna 3x1, se definiría la multiplicación. La transposición se efectúa con el operador '
(apostrofe).
c'
b*c'
este es el producto bcT.
B=[-6,3,-2,4,6];
L=A.*B
F=A./B
Asimismo la exponenciación de arreglos también es una operación elemento por elemento ejemplos;
Z=A.^2
M=A.^B
P=3.^A
Los ejemplos anteriores utilizaron vectores, pero las mismas reglas se aplican a matrices con
renglones y columnas, como lo podrás constatar declarando la matriz 'd' ejecutando las operaciones
indicadas:
d=[1:6;-1:-1:-6];
f=d.*6
w=d.^2
» p2 = poly([-1 -2])
Para evaluar el polinomio en un punto se utiliza la instrucción
» ps=polyval(p,s)
» c =conv([1 1],[12])
y para la división:
» printsys(num, den)
Pruebe generar esta gráfica: creando un vector llamado x con los Si se agrega un tercer argumento en
el comando datos:
x = [1 2 3 4 5 6 7 8 9 10];
y = [158.5 93.8 84.2 77.3 111.5 88.3 100.1 65.6 90.5 149.4];
plot (x, y)
grid
plot éste define el color y el estilo de la gráfica. Es una cadena la que determina el color de la línea,
estilo de la misma y los símbolos (si los hay) utilizado para los puntos de marca, por tanto intente dar
elegancia a su grafica anterior agregando al comando plot:
plot(x,y,'ro');grid
Pruebe algunos cambios en color y tipo de línea para la gráfica que venimos trabajando, de acuerdo
con la Tabla 1.
LISTA DE CARACTERES
Las gráficas generadas con matlab se pueden almacenar e incluir en otros archivos en diferentes
formatos. En la ventana de la gráfica seleccione el menú despleglable “File” y elija la opción
“Export”, elija algún formato, por ejemplo .bmp, y exporte la gráfica.
Los comandos MATLAB para generar gráficas lineales y logarítmicas de los vectores x y y son los
siguientes
Código No.1
v1=[0:0.001:.7979];
w1=298;
q=1.6022e-19;
n=1.5;
k=1.38e-23;
num1=q.*v1;
den1=n*k*w1;
M1=num1./den1;
x1=1e-9.*exp(M1);
v2=[0:0.0001:.6379];
w2=358;
num2=q.*v2;
den2=n*k*w2;
M2=num2./den2;
x2=1024e-9.*exp(M2);
plot(v1,x1,'b',v2,x2,'r');title('Ecuación del diodo'); legend('TEMPERATURA 298 K',
'TEMPERATURA 358 K');grid
V.9.6 Subgráficas:
El comando subplot permite dividir la pantalla de gráficos en ventanas. Las posibles divisiones
pueden ser dos ventanas o cuatro ventanas o incluso 8 ventanas en una hoja.. Los argumentos del
comando subplot son tres enteros: (m, n, p). Los dígitos m y n especifican que la ventana de gráficos
se divida en una retícula de m por n ventanas más pequeñas, y el digito p especifica la p-ésima
ventana para la gráfica actual (donde se ubica esta grafica) . Las ventanas se numeran de izquierda a
derecha y de arriba abajo.
Por ejemplo el siguiente comando subplot(2,1,1);plot(x,y) especifica que la ventana de gráficos se
divida en una grafica superior y una inferior ( dos líneas de graficas en una columna ) y que la
grafica actual plot(x,y) se coloque en la ventana superior ver código No. 2.
El siguiente juego de instrucciones genera cuatro graficas que ilustran la función del comando
subplot empleando escalas lineales y logarítmica.
Código No. 2
t=[0:0.001:1];
f=2;
w=2*pi*f;
x=((1/2).*(1+cos(2*w.*t)));
subplot(2,2,1);plot(t,x,'r','linewidth',2);grid
subplot(2,2,2);semilogx(t,x,'b','linewidth',2);grid
subplot(2,2,3);semilogy(t,x,'r','linewidth',2);grid
subplot(2,2,4);loglog(t,x,'b','linewidth',2);grid
Código No. 3
t=[-6*pi:0.001:6*pi];
w1=2/3;
w2=1/2;
w3=1/3;
x1=2.*sin(w1.*t);
x2=3.*sin(w2.*t);
x3=4.*sin(w3.*t);
plot(t,x1,'b',t,x2,'r',t,x3,'k','linewidth',2);title('Cada senoidal completa un numero entero de
ciclos');grid
Código No. 4
% Ejemplo de archivo script que genera las gráficas de pétalos de una flor %
for k = 1:4
polar(theta,rho(k,:)) % Gráfica de las salidas
end % Fin de secuencia y de programa
Para correr línea por línea el Script, siga las siguientes instrucciones:
Ubique el cursor en cada uno de los renglones del programa, con excepción de la línea del comando
“for”,
Coloque el cursor en cada línea y establezca un punto de ruptura de programa (“Breakpoint”).
Localice el icono Breakpoints despliegue el menú de cortina y seleccione Set/clear “ Set or clear
breakpoint on current line” (F12). En la extrema izquierda de las líneas aparecerá un punto rojo.
En cuanto termine de establecer los puntos de ruptura de programa retorne el cursor a la primera
línea de instrucciones theta = -pi:0.01:pi;
Localice el icono Run y del menú desplegable elija la opción “Run: nom-del-archivo”. La ejecución
del programa deberá detenerse en la primera línea con punto rojo aparecerá una flecha de color verde
al lado derecho del punto rojo que indica que se a ejecutado la primera línea del código , esto es, en
la definición de theta.
Elija el icono “Step” y de clic izquierdo en el ratón (F10) la flecha que indica la línea a ejecutar se
detendrá en la siguiente línea con punto rojo, haga esto reiteradamente hasta recorrer el primer siclo
del “for”
Revise el contenido de la ventana “Figure 1”, encontrara la grafíca que corresponde a k=1
Regrese al espacio de trabajo y revise su contenido con el comando
>> whos – deberá aparecer la variable theta.
Continúe paso a paso la ejecución del programa, revisando para cada valor de k el contenido la
ventana “Figure 1” y del espacio de trabajo (Command Window). Terminando con las gráficas
generadas.
Al terminar la ejecución aparecerá el icono de la flecha verde apuntando hacia abajo lo que indica
que ha terminado el siclo del “for”
Cree un diario de la práctica de MATLAB (que se encuentra desarrollando en este momento) con el
comando diary (y como nombre del diario prueba) y guarde en el todas las operaciones siguientes
hasta que se le indique cerrar el diario.
A=1,B=2,C=3
save numeros
Al terminar de escribir las dos líneas anteriores, revise la ventana Current Directory ¿Qué
archivos encuentra adicionales a los ya existentes (si es el caso), ¿Qué utilidad le representaria
el archivo números?, ¿Qué utilidad le representaria el archivo prueba?
Home
load numeros
whos
A,B,C
Escriba las siguientes líneas una a la vez en la ventana Command Window, pulse la tecla de enter
observe el resultado y presente en el reporte cual es la función de cada línea.
Cierre el diario.
Limpie la pantalla; ya sea con home o clc (¿Cuál es la diferencia entre las dos instrucciones?)
Contando con con las raíces -1 y -2 forme el vector (p2) que representa al polinomio en
MatLab mediante la instrucción poly( [ ] )
Ingrese a la ventana las líneas siguientes y comente cual es la operación que realizan.
c =conv([1 1],[12])
d = deconv([1 3 2],[1 1])
x = [1 2 3 4 5 6 7 8 9 10];
y = [158.5 93.8 84.2 77.3 111.5 88.3 100.1 65.6 90.5 149.4];
Dibuje una retícula sobre la gráfica, abra una nueva ventana para la siguiente figura. Ejecute las
siguientes líneas de comando.
Ponga título y etiquetas para ambos ejes coordenados en las dos graficas, cambie el color y el tipo de
línea de una de las dos graficas.
Cierre el diario
Corra los mismos 4 códigos desde el editor de MatLab, el código número 4 córralo paso a paso
Reporte a su profesor el contenido de cada uno de los tres diarios y las graficas de la ejecución del
código número 4 con las 4 graficas que se generan
Código No. 1
k=1.38e-23;
num2=q.*v2;
den2=n*k*w2;
M2=num2./den2;
x2=1024e-9.*exp(M2);
plot(v1,x1,'b',v2,x2,'r');title('Ecuación del diodo'); legend('TEMPERATURA 298 K',
'TEMPERATURA 358 K');grid
Código No. 2
f=2;
w=2*pi*f;
subplot(2,2,1);plot(t,x,'r','linewidth',2);grid
subplot(2,2,4);loglog(t,x,'b','linewidth',2);grid
Código No. 3
x3=4.*sin(w3.*t);
plot(t,x1,'b',t,x2,'r',t,x3,'k','linewidth',2);title('Cada senoidal completa un numero entero de
ciclos');grid
Código No. 4
% Ejemplo de archivo script que genera las gráficas de pétalos de una flor %
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for k = 1:4
polar(theta,rho(k,:))
end
Nombre: _______________________________
Vl. Anexo
Comandos de Propósito General
+ Operador suma.
- Operador resta.
* Operador multiplicación.
.* Operador multiplicación elemento a elemento.
^ Operador potencia.
.^ Operador potencia elemento a elemento.
\ Operador división izquierda.
/ Operador división derecha.
.\ Operador división izquierda elemento a elemento.
./ Operador división derecha elemento a elemento.
: Genera elementos regularmente espaciados en vector renglón.
() Indica el argumento de una función o el índice de una matriz. Tiene la más alta precedencia.
[] Agrupa los elementos de una matriz.
. Punto decimal.
Operación de continuación de línea.
, Separa sentencias y elementos declarados en un mismo renglón.
; Separa columnas y suprime la impresión a pantalla.
% Designa un comentario y especifica el formato.
` Operador transponer.
= Asignación.
Funciones Matemáticas
Matrices especiales
Aritmética de matrices
Comandos gráficos 2D
bar Histograma
loglog Gráfico logarítmico
polar Gráfico polar
semilogx Gráfico semilogarítmico en x
semilogy Gráfico semilogarítmico en y
stairs Gráfico a segmentos
stem Gráfico a espigas
Comandos gráficos 3D
contour Crea gráfica de contorno
griddata
mesh Crea superficie tridimensional
meshgrid Crea malla rectangular
meshc Igual que mesh con contorno
meshz Igual que mesh con líneas verticales
plot3 Crea gráfica tridimensional con puntos y líneas
surf Crea gráficas tridimensionales con sombreado
surfc Igual que surf con contorno
waterfall Igual que mesh con líneas en una sola dirección
zlabel Agrega etiqueta en el eje z
Programación