2. ÍNDICE GENERAL
Pagina
1. INTRODUCCIÓN .......................................................................................................................................................6
1.1 ESCRITORIO DE MATLAB......................................................................................................................................6
1.2 PROGRAMA EJEMPLO ..............................................................................................................................................7
1.3 DESKTOP DE MATLAB ........................................................................................................................................15
2. FUNDAMENTOS DE MATLAB .............................................................................................................................18
2.1 VARIABLES ...........................................................................................................................................................18
2.2 ARRAYS: VECTORES Y MATRICES..........................................................................................................................19
2.3 MOVIMIENTO VERTICAL BAJO GRAVEDAD ............................................................................................................23
2.4 OPERADORES ........................................................................................................................................................24
2.4.1. Operadores matriciales de MATLAB son los siguientes:.............................................................................24
2.4.2. Operadores relacionales..............................................................................................................................24
2.4.3. Operadores lógicos ......................................................................................................................................25
2.4.4. Funciones matemáticas elementales que operar a modo de escalar............................................................26
2.5 NÚMEROS COMPLEJOS ..........................................................................................................................................27
3. PROGRAMACIÓN EN MATLAB ..........................................................................................................................28
3.1 BIFURCACIONES Y BUCLES....................................................................................................................................28
3.1.1. Sentencia IF .................................................................................................................................................29
3.1.2. Sentencia SWITCH.......................................................................................................................................30
3.1.3. Sentencia FOR .............................................................................................................................................30
3.1.4. Sentencia WHILE.........................................................................................................................................31
3.1.5. Sentencia break ............................................................................................................................................31
3.1.6. Sentencia continue .......................................................................................................................................32
3.1.7. Sentencias TRY..CATCH..:END...................................................................................................................32
3.2 LECTURA Y ESCRITURA INTERACTIVA DE VARIABLES ...........................................................................................33
3.2.1. Función INPUT............................................................................................................................................33
3.2.2. Función DISP...............................................................................................................................................35
4. DISEÑO DE UN PROGRAMA Y DESARROLLO DE UN ALGORITMO.......................................................36
4.1 PROCESO DE DISEÑO DE UN PROGRAMA COMPUTACIONAL....................................................................................36
5. MATRICES DE NÚMEROS ....................................................................................................................................42
5.1 MATRICES.............................................................................................................................................................42
5.2 OPERACIONES CON MATRICES...............................................................................................................................43
5.3 OTRAS FUNCIONES CON MATRICES........................................................................................................................45
6. GRÁFICOS ................................................................................................................................................................46
6.1 MÚLTIPLES GRÁFICOS...........................................................................................................................................46
6.2 VISUALIZACIÓN DE MATRICES ..............................................................................................................................48
6.3 GRÁFICOS INTERESANTES .....................................................................................................................................49
7. REFERENCIAS.........................................................................................................................................................61
18. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
18
2. FUNDAMENTOS DE MATLAB
2.1 Variables
Las variables
• Deben consistir solo de las letras a-z , dígitos de 0 – 9 y la raya abajo ( _ )
• Deben comenzar con una letra
Ejemplo de nombres validos
r2d2 pay_day
Ejemplos de nombre NO VALIDOS
pay-day 2a name$ _2a
Matlab diferencia el uso de MAYÚSCULAS y minúsculas.
En el siguiente ejemplo se trata de tres variables distintas
balance, BALANCE y BaLance
23. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
23
2.3 Movimiento vertical bajo gravedad
Una piedra es lanzada verticalmente hacia arriba con una velocidad v1 de 60
m/s, su desplazamiento vertical esta dada por la ecuación d = v1*
t+(1/2)*g*t. g es la aceleración de la gravedad. Se desprecia la resistencia del
aire. Se desea calcular el el valor de d para 12.3 segundos en intervalos de
0.1 segundos, debe graficar distancia vs tiempo en ese periodo.
% Movimiento vertical bajo gravedad
g=9.8 % aceleración de la gravedad
v1=60; % velocidad inicial en m/s
t=0:0.01:12.3; % tiempo en segundos
d=v1*t-(1/2)*g*t.^2 % desplazamiento vertical en metros.
plot(t,d), title('Movimiento vertical bajo gravedad')
xlabel('Tiempo'),
ylabel('Desplazamiento vertical'),grid
24. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
24
2.4 Operadores
2.4.1. Operadores matriciales de MATLAB son los siguientes:
+ Adición o suma
– sustracción o resta
* Multiplicación
' traspuesta
^ Potenciación
división-izquierda
/ división-derecha
.* Producto elemento a elemento
./ y . división elemento a elemento
.^ Elevar a una potencia elemento a elemento
2.4.2. Operadores relacionales
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual que
~= distinto que
25. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
25
2.4.3. Operadores lógicos
Los operadores lógicos de MATLAB son los siguientes:
& and (función equivalente: and(A,B)). Se evalúan siempre ambos
operandos, y el resultado es true sólo si ambos son true.
&& and breve: si el primer operando es false ya no se evalúa el segundo,
pues el resultado final ya no puede ser más que false.
| or (función equivalente: or(A,B)).
Se evalúan siempre ambos operandos, y el resultado
es false sólo si ambos son false.
|| or breve: si el primer operando es true ya no se evalúa el segundo,
pues el resultado final no puede ser más que true.
~ negación lógica (función equivalente: not(A))
xor(A,B) realiza un "or exclusivo", es decir,
devuelve 0 en el caso en que ambos sean 1 ó ambos sean 0.
Los operadores lógicos se combinan
27. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
27
2.5 Números complejos
En MATLAB un numero complejo se escribe de la foma a+bi.
La terminación i y j solo funciona con numero simples, no con expresiones
Ejemplo:
>> a=1;b=4;c=13;
>> x1=(-b+sqrt(b^2-4*a*c))/(2*a)
x1 =
-2.0000 + 3.0000i
>> x2=(-b-sqrt(b^2-4*a*c))/(2*a)
x2 =
-2.0000 - 3.0000i
>> %comprobando
>> a*x1^2+b*x1+c
28. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
28
3. PROGRAMACIÓN EN MATLAB
3.1 Bifurcaciones y bucles
Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. Mientras que
en C/C++/Java el "cuerpo" de estas sentencias se determinaba mediante llaves {...}, en MATLAB
se utiliza la palabra end con análoga finalidad. Existen también algunas otras diferencias de sintaxis.
29. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
29
3.1.1. Sentencia IF
if condicion
sentencias
end
Existe también la bifurcación múltiple, en la que pueden
concatenarse
tantas condiciones como se desee, y que tiene la forma:
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opción por defecto para
% cuando no se cumplan las
% condiciones 1,2,3
bloque4
end
donde la opción por defecto else puede ser omitida: si no está presente no
se hace nada en caso de que no se cumpla ninguna de las condiciones
que se han chequeado.
30. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
30
3.1.2. Sentencia SWITCH
La sentencia switch realiza una función análoga a un conjunto de if...elseif
concatenados.
Su forma general es la siguiente:
switch switch_expresion
case case_expr1,
bloque1
case {case_expr2, case_expr3, case_expr4,...}
bloque2
...
otherwise, % opción por defecto
bloque3
end
3.1.3. Sentencia FOR
for i=1:n
sentencias
end
o bien,
for i=vectorValores
sentencias
end
donde vectorValores es un vector con los distintos valores que
tomará la variable i.
31. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
31
En el siguiente ejemplo se presenta una estructura correspondiente a
dos bucles anidados. La variablej es la que varía más rápidamente
(por cada valor de i, j toma todos sus posibles valores):
for i=1:m
for j=1:n
sentencias
end
end
3.1.4. Sentencia WHILE
La estructura del bucle while es muy similar a la de C/C++/Java.
Su sintaxis es la siguiente:
while condicion
sentencias
end
donde condicion puede ser una expresión vectorial o matricial. Las
sentencias se siguen ejecutando mientras haya elementos distintos de cero
en condicion, es decir, mientras haya algún o algunos elementos true. El
bucle se termina cuando todos los elementos de condicion son false (es
decir, cero).
3.1.5. Sentencia break
Al igual que en C/C++/Java, la sentencia break hace que se termine la
ejecución del bucle for y/o while más interno de los que comprenden a
dicha sentencia.
32. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
32
3.1.6. Sentencia continue
La sentencia continue hace que se pase inmediatamente a la siguiente iteración del
bucle for o while, saltando todas las sentencias que hay entre el continue y el fin del
bucle en la iteración actual.
3.1.7. Sentencias TRY..CATCH..:END
La construcción try...catch...end permite gestionar los errores que se
pueden producir en tiempo de ejecución. Su forma es la siguiente:
try
sentencias1
catch
sentencias2
end
En el caso de que durante la ejecución del bloque sentencias1 se
produzca un error, el control de la ejecución se transfiere al bloque
sentencias2. Si la ejecución transcurriera normalmente, sentencias2
no se ejecutaría nunca. MATLAB dispone de una función lasterr que
devuelve una cadena de caracteres con el mensaje correspondiente al
último error que se ha producido. En la forma lasterr('') pone a cero este
contador de errores, y hace que la función lasterr devuelva la matriz
vacía [] hasta que se produzca un nuevo error.
35. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
35
3.2.2. Función DISP
La función disp permite imprimir en pantalla un mensaje de texto o el
valor de una matriz, pero sin imprimir su nombre.
En realidad, disp siempre imprime vectores y/o matrices: las cadenas de
caracteres son un caso particular de vectores. Considérense los siguientes
ejemplos de cómo se utiliza:
>> disp('El programa ha terminado')
>> A=rand(4,4)
>> disp(A)
Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos formas de
imprimir la matriz A.
36. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
36
4. DISEÑO DE UN PROGRAMA Y DESARROLLO DE UN ALGORITMO
4.1 Proceso de diseño de un programa computacional
Al momento de enfrentar la solución y programación de un pedido (caso) seguir los
siguientes pasos:
Paso 1: Análisis del problema
Paso 2: Encarando el problema. Desarrollo matemático detallado.
Paso 3: Esquema del procesamiento. Se define los inputs y outputs.
Paso 4: Algoritmo. Paso por paso del procedimiento.
Paso 5: Programar algoritmo. Traducción del algoritmo a un programa
computacional (MATLAB)
Paso 6: Evaluación. Probar todas las opciones. Validación.
Paso 7: Aplicación. Resuelve los problemas para los que fue
programado.
37. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
37
Caso ejemplo:
Se desea calcular el vuelo de un proyectil (i.e. una pelota de golf) lanzada a una
velocidad y ángulo pre establecido. Se desea determinar la trayectoria del vuelo y la
distancia horizontal que el objeto vuela antes de tocar tierra. Asuma que la resistencia
del aire es cero y que la constante de fuerza a gravitacional actúa sobre el objeto en
dirección opuesta de la distancia vertical a la tierra.
El ángulo de disparo θo, se define como el ángulo medido desde la horizontal (plano de
tierra) hasta la dirección vertical i.e. 0<θo ≤π/2, donde θo =0 implica lanzado en la
dirección horizontal y θo =π/2 implica que se lanzo en la dirección vertical (i.e. en la
dirección opuesta a la gravedad). Si g =9.81 m/s2 es utilizado como aceleración de la
gravedad , luego la velocidad de lanzamiento Vo debe ingresarse en m/s. Luego si el
tiempo t>0 esta definido en segundo(s) del tiempo de lanzamiento t=0, la distancia de
viaje en x (dirección horizontal) y y (dirección vertical) están en metros (m).
Se desea determinar el tiempo que toma desde el inicio del movimiento hasta que toca
tierra, la distancia horizontal que viaja, y la forma de la trayectoria. Adicionalmente
grafique la velocidad del proyectil versus la dirección de su vector (las ecuaciones
detalladas las encuentra en libros de FÍSICA de I y II de pregrado).
38. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
38
Solución vía MATLAB
clear
clc
% Problema del proyectil (pelota de golf)
% con resistencia cero del aire
% en un g=gravedad.
disp (' Movimiento de una pelota de golf')
disp (' ---------------------------------')
disp(' ')
% 1. Definición de las variables de entrada
g = 9.81; % Gravedad en m/ss
vo=input('¿Cual es la Velocidad de lanzamiento en m/s ? ')
tho=input('¿Cual es el angulo de lanzamiento en grados? ')
tho = pi*tho/180; % Conversion de grados a radianes.
% 2. Calculo del rango y duracion del vuelo
txmax = (2*vo/g) * sin(tho);
xmax = txmax * vo * cos(tho);
% 3. Calculo de la secuencia de tiempo por pasos
% para calcular la trayectoria.
dt = txmax/100;
t = 0:dt:txmax;
39. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
39
% 4. Calculo de la trayectoria
x = (vo * cos(tho)) .* t;
y = (vo * sin(tho)) .* t - (g/2) .* t.^2;
% 5. Calculo de la velocidad y direccion angular
% del proyectil
% Nota que vx = dx/dt, vy = dy/dt.
vx = vo * cos(tho);
vy = vo * sin(tho) - g.* t;
v = sqrt(vx.*vx + vy.*vy);
th = (180/pi) .* atan2(vy,vx);
% 6. Calculo del tiempo, distancia horizontal
% a la maxima altitud
tymax = (vo/g) * sin(tho);
xymax = xmax/2;
ymax = (vo/2) * tymax * sin(tho);
% 7. Mostrar resultados.
disp(['Rango en m = ',num2str(xmax),' Duracion en s =
',num2str(txmax)])
disp(' ')
disp(['Maxima altitude en m = ',num2str(ymax),' Arriva en
s = ', num2str(tymax)])
plot(x,y,'k',xmax,y(size(t)),'o',xmax/2,ymax,'o')
title(['Trayectoria de vuelo del Proyectil vo
=',num2str(vo),' theta =',num2str(180*tho/pi)])
xlabel('x'), ylabel('y') % Figura 1
figure % Crea una nueva.
plot(v,th,'r')
title('Velocidad del Proyectil vs. angulo')
xlabel('V'), ylabel('theta') % Figura 2.
%
% 8. Stop.
%
45. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
45
5.3 Otras funciones con matrices
det determinante
eig valores propios (descomposcion eigenvalue)
expm matriz exponential, i.e. eA
, donde A es una matriz.
inv inversa.
lu Facorizacion LU factorization (en matrices triangulares lower y upper).
qr factorization ortogonal.
svd descomposición de valor singular (singular value decomposition)
61. ______________________________________________________________________________________
MATLAB para Ingenieros. Raúl Vilcahuamán Sanabria
61
7. REFERENCIAS
[1] Jaan Kiusalaas (2010). Numerical Methods in Engineering with
MATLAB. Cambridge University Press. The Edinburgh Building,
Cambridge CB2 8RU, UK.
[2] Brian D. Hahn and Daniel T. Valentine (2007). Essential
MATLAB® for Engineers and Scientists. Third edition.
Butterworth-Heinemann is an imprint of Elsevier Linacre House,
Jordan Hill, Oxford, OX2 8DP 30 Corporate Drive, Burlington, MA
01803.
[3] Brian Hahn (2002) Essential MATLAB for Scientists and
Engineers. Elsevier, Inc.84 Theobald’s Road, London WC1X 8RR,
UK.
[4] SAADAT, HADI (2004 ) Power System Analysis. McGraw Hill
Higher Education; 2nd edition. USA.
[5] GARCÍA, JAVIER, IGNACIO, JOSE Y VIDAL, JESÚS (2005)
Aprenda Matlab 7.0. Escuela Técnica Superior de Ingenieros
Industriales, Universidad Politécnica de Madrid, España.
[6] Apoyo a la Investigación. Servicios Informáticos U.C.M.(2005)
Manual Básico de Matlab. Universidad Complutense de Madrid.
España.
[7] VILCAHUAMÁN, RAÚL y TORRES, HÉCTOR (2008) Control de
Sistemas Eléctricos de Potencia con Matlab y Simulink. IANSA
EIRL