You are on page 1of 9

Notas de Matlab

2
Que es Matlab?
Es un sistema de c
alculo numerico basado en un lenguaje matricial.
En Matlab todo es o tiene que ver con una matriz con entradas complejas.
En este sentido, es importante recordar el algebra matricial.
Sean A y B Matrices

a11 a12
a21 a22

A+B = .
..
..
.

entonces:

..
.


a1n
b11
b21
a2n

.. + ..
. .

b12
b22
..
.

..
.


a11 + b11
b1n
a21 + b21
b2n

..
.. =
.
.

bm1

bm2

bmn

am1

am2

amn

a11
a21

A = .
..

a12
a22
..
.

..
.


a11
a1n
a21
a2n

.. = ..
. .

a12
a22
..
.

..
.

a1n
a2n

..
.

am1

am2

amn

am1

am2

amn

a11
a12

AT = .
..

a21
a22
..
.

..
.

am1
am2

..
.

a1n

a2n

amn

am1 + bm1

a12 + b12
a22 + b22
..
.

..
.

a1n + b1n
a2n + b2n
..
.

am2 + bm2

amn + bmn

Si A es una matriz cuadrada su inversa sera A1 tal que A A1 = I

C
omo se introduce una matriz
en Matlab?

a11 a12 a1n


a21 a22 a2n


Si A= .
..
.. , en Matlab se introduce como: a11
..

..
.
.
.
am1 am2 amn

a12

a1n ;

;am1

am2

Instrucciones B
asicas de Matlab
Sea A una matriz de n m:
1. El ; al final de la linea, hace que no muestre la informacion en pantalla pero si la compila.
2. A0 = Transpuesta Conjugada.
3. A.0 = Transpuesta sin Conjugar. Nota si A solamente tiene entradas reales A0 = A.0 .
4. Si ~a es un vector diag(~a) genera una matriz cuya diagonal es el vector ~a.
5. ones(n) genera una matriz de n n con todas sus entradas iguales a 1.
6. zeros(n) genera una matriz de n n con todas sus entradas iguales a 0.
7. eye(n) es la matriz identidad de n n.
8. ones(n, m) y zeros(n, m) son matrices de n m que se comportan como 4 y 5 respectivamente.
9. size(A) genera un vector [m, n] donde m= n
umero de filas de A y n= n
umero de columnas de A.
10. triu(A) coloca ceros debajo de la diagonal principal de A.
11. tril(A) coloca ceros arriba de la diagonal principal de A.
~ cuya coordenada i-esima es la suma de la columna i-esima de A.
12. sum(A) genera un vector V
13. rank(A) es el rango de A.
14. trace(A) es la traza de A.


amn .

3
15. A(:, j) es el vector columna j de A.
16. A(i, :) es el vector fila i de A.
17. A(i, j) es la entrada (i, j) de A.
18. det(A) es el determinante de la matriz A. (Solamente es valido para matrices de n n).
19. inv(A) es la inversa de la matriz A. (Solamente es valido para matrices de n n).
20. eig(A) nos da los valores propios de A. (Solamente es valido para matrices de n n).
21. A\b resuelve un sistema lineal donde b es un vector de m entradas.
Operaciones y Funciones sobre Vectores
Si ~v , w
~ son vectores de Rn o Cn :
1. ~v + w
~ es la suma de ~v con w.
~
2. ~v es el producto del escalar por el vector ~v .
3. ~v . w
~ es un vector cuyas entradas son vi wi . Ejemplo (1, 4, 2). (2, 5, 3) = ((1)(2), (4)(5), (2)(3)) = (2, 20, 6).
4. En el caso
m A. B es la matriz que en la
ij tiene
 de matrices
 A,B
 de n 
 entrada

 a aij bij .
2 1 3
1 0 2
(2)(1) (1)(0) (3)(2)
2 0 6
Ejemplo
.
=
=
.
4 1 5
3 1 1
(4)(3) (1)(1) (5)(1)
12 1 5
5. ~v . n es el vector que se obtiene elevando al exponente n cada entrada de ~v . Si a es un escalar a n = an .
6. min(~v ) es el elemento mnimo de las coordenadas de ~v .
7. max(~v ) es el elemento m
aximo de las coordenadas de ~v .
8. sum(~v ) es la suma de las coordenadas de ~v .
9. mean(~v ) es la media aritmetica de las coordenadas de ~v .
10. std(~v ) es la desviaci
on est
andar de las coordenadas de ~v . (La cual divide entre n-1)
11. prod(~v ) es el producto de las coordenadas de ~v .
12. sort(~v ) es un vector con las coordenadas de ~v ordenadas de menor a mayor.
13. ~v ./w
~ realiza la divisi
on entrada por entrada (siempre que ~v y w
~ tengan la misma dimension). Si ~v es una
constante, el punto puede o no ser colocado. Esta instruccion tambien puede ser utilizada para matrices A y
B e igualmente se hace la divisi
on entrada por entrada (las matrices tienen que ser de la misma dimensi
on).
Nota 0.0.1. Todas las funciones matem
aticas, trigonometricas, logartmicas, exponenciales, potencias, etc. Se
pueden aplicar tanto a matrices como a vectores y la aplicacion se hace coordenada a coordenada.
Ejemplo 0.0.2.
>> a = [1, 3; 2, 0]
>> sin(a) = [sin(1), sin(3); sin(2), sin(0)]
Un script es una secuencia de comandos MATLAB, tambien denominada programa. Los scripts tambien se
denominan archivos M, ya que la extensi
on *.m es la que mas se utiliza. Cuando se ejecuta un script, MATLAB
ejecuta los comandos en el orden en que estos han sido escritos, igual que si se ejecutaran uno a uno en la
Ventana de Comandos.
Si un script contiene un comando que produce una salida (por ejemplo, una asignacion de variable sin un punto
y coma al final), la salida se visualiza en la Ventana de Comandos.
En MATLAB, los scripts se crean y editan con Ia Ventana del Editor/Depurador. Para abrir esta ventana
ir al menu F ile N ew M f ile.
Los comandos, dentro del script, se teclean lnea por lnea. Estas lneas se enumeran automaticamente.
Los comandos tambien se pueden escribir en cualquier editor o procesador de textos.
Las primeras lneas de un script suelen ser comentarios que describen de forma resumida la funcionalidad del
c
odigo que sigue a continuaci
on.

4
Antes de ejecutar un script se tiene que guardar en disco. Las reglas de asignacion de nombres para los
scripts son las mismas que para variables, ya que estos deben comenzar por una letra y pueden incluir dgitos y
el gui
on bajo, hasta un m
aximo de 63 caracteres. No se pueden utilizar como nombres para scripts las variables
ya definidas por el usuario, as como los nombres de variables predefinidas y comandos y funciones existentes
en MATLAB.
Un script se puede ejecutar:
Tecleando su nombre en la Ventana de Comandos (y pulsando Ia tecla Enter).
Desde la Ventana del Editor a traves del icono Run(Ejecutar), sin embargo, antes de hacer esto el usuario debe
asegurarse de que MATLAB puede encontrar o tener acceso al archivo. Para ello, el archivo debe estar:
Almacenado en el directorio actual por defecto.
Almacenado en la ruta de b
usqueda de archivos.
Los archivos tipos funci
on son como una funcion matematica y = funcion(x), donde x es el vectorde variables independientes (x es una matriz(vector)) y el vectorde variables dependientes (y es una matriz(vector)).
En Matlab, las funciones se mandan a llamar como sigue:
>> funcion(x)
donde funci
on= es el nombre que le damos a la funcion y x= es el vector con los datos que necesitara la funci
on.
Los archivos tipo funci
on se salvan con el nombre que se le de a la funcion al momento de elaborar el programa y quedara guardado como funci
on.m; los archivos de ambos tipos se elaboran en un editor que Matlab
ya trae integrado.
En Matlab los polinomios se consideran respecto a la base {xn , xn1 , xn2 , , x, 1} (decreciente), as en
Matlab 4x3 + 7x 4 se representan como el vector [4, 0, 7, 4].
Respecto a los polinomios, si ~v es un vector, roots(~v ) da las races del polinomio que ~v representa.
Ejemplo 0.0.3. Hallar las races de 3 + x 5x2 + 7x4
>> v = [7, 0, 5, 1, 3] (que es la representacion del polinomio en Matlab)
>> roots(v)

0 1 3
Ejemplo 0.0.4. Dada A = 4 1 5 calcular los valores propios de A.
6 0 2
>> A = [0, 1, 3; 4, 1, 5; 6, 0, 2]
>> eig(A)
El directorio de trabajo actual se muestra en el campo C
urrent Directory se puede cambiar desde la Ventana
del Directorio Actual o tecleando el comando cd en Ia Ventana de Comandos.
2

Ejemplo 0.0.5.
>> cd
D : \M is documentos\M AT LAB
>> (cd D : \M is documentos\M AT LAB\ejemplos(
D : \M is documentos\M AT LAB\ejemplos
>> cd (D : \M is documentos\M AT LAB)
D : \M is documentos\M AT LAB
Una vez que se utilizan dos o mas directorios de trabajo en una sesion, es posible cambiar de uno a otro en
el campo de Directorio Actual de la Ventana de Comandos.

5
Cuando el usuario ejecuta un script o una funcion, MATLAB busca el archivo en los directorios que se
encuentran en la ruta de b
usqueda.
Estos directorios se encuentran en particular en la Ventana de la Ruta de B
usqueda que se puede abrir seleccionando en el men
u File Set Path.
Una vez abierta esta ventana, se pueden a
nadir nuevos directorios o borrar los existentes, modificando la ruta
de b
usqueda de archivos en MATLAB.
VARIABLES
Las variables globales son variables que, una vez creadas en MATLAB, son reconocidas en cualquier parte,
incluidos todos los script.En general, cualquier variable definida en la Ventana de Comandos es reconocida en
cualquier script.
Cuando una variable se define en un script esta puede ser usada en Ia Ventana de Comandos. En otras palabras,
cualquier variable creada existe, y por lo tanto puede ser manipulada tanto en scripts como en la Ventana de
Comandos.
Cuando se ejecuta un script, las variables utilizadas en los calculos dentro del script deben tener valores
asignados previamente. La asignaci
on de valores a estas variables se puede realizar de tres formas, dependiendo
de d
onde y c
omo se haya definido la variable.
Variable definida y asignada en el script
En este caso, la asignaci
on del valor a la variable forma parte del script. Si el usuario quiere ejecutar el script
con un valor diferente para esa variable, el script debe editarse para asignarle un nuevo valor.
Variable definida y asignada en la Ventana de Comandos
En este caso, la asignaci
on de un valor a la variable se realiza en Ia Ventana de Comandos (recuerde que la
variable es reconocida sin problemas dentro del script). Si el usuario quiere ejecutar el script con un valor diferente para esta variable, se debe asignar el nuevo valor en la Ventana de Comandos, y despues ejecutar el script
de nuevo.
Variable definida y asignada en el script, pero adem
as se introduce un valor concreto para Ia
variable cuando se ejecuta el script
En este caso, la variable se define en el script y cuando se ejecuta se le pide al usuario un valor concreto, a traves
de la Ventana de Comandos, para asign
arselo a la variable del script. Para hacer esto se utiliza el comando
input.
Ejemplo: nombrev ariable = input(0 M ensaje0 )
Nota 0.0.6. Para colocar un comentario dentro del programa, el cual no sera compilado por el usuario
utilizamos % .
Ejemplo:
>> % Comentario
Si A y B son matrices la instrucci
on [A B] es una matriz aumentada, es decir une la matriz A con la matriz
B (A y B deben tener el mismo numero de filas).
Ejemplo:


1 2
>> A =
3  4
0
>> B =
0
>> [A
B]


1 2 0
>>
3 4 0
Nota 0.0.7. Si colocamos en la pantalla de compilacion help nombre de la funci
on o instrucci
on Matlab nos
dar
a informaci
on sobre dicha funci
on o instruccion.
Ejemplo: help sum
BUCLES
Bucle FOR
La sentencia for repite un conjunto de sentencias un n
umero predeterminado de veces. La siguiente construcci
on

6
ejecuta sentencias con valores de i de 1 a n, variando de uno en uno.
>> f or i = 1 : n
>> sentencias
>> end
Cada for que escribamos debera ser terminado con su correspondiente end.
O bien,
>> f or vectorvalores
>> sentencias
>> end
donde vectorvalores es un vector con los distintos valores que tomara la variable i.
En el siguiente ejemplo se presenta el caso mas general para la variable del bucle (valor inicial : incremento :
valor f inal); el bucle se ejecuta por primera vez con i = n, y luego i se va reduciendo de 0,2 en 0,2 hasta que
llega a ser menor que 1, en cuyo caso el bucle se termina:
>> f or i = n : 0,2 : 1
>> sentencias
>> end
En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La variable j es
la que vara m
as r
apidamente (por cada valor de i, j toma todos sus posibles valores):
>> f or i = 1 : m
>> f or i = 1 : n
>> sentencias
>> end
>> end
Una u
ltima forma de interes del bucle for es la siguiente (A es una matriz):
>> f or i = A
>> sentencias
>> end
en la que la variable i es un vector que va tomando en cada iteracion el valor de una de las columnas de A.
Cuando se introducen interactivamente en la lnea de comandos, los bucles for se ejecutan solo despues de
introducir la sentencia end que los completa.
SENTENCIAS CONDICIONALES
Una sentencia condicional es una instruccion Matlab que permite tomar decisiones sobre si se ejecuta un
grupo de comandos que cumplen una condici
on o, por el contrario, omitirlos.
En una sentencia condicional se eval
ua una expresion condicional. Si la expresion es verdadera, el grupo o
bloque de comandos se ejecutan. Si la expresion es falsa, Matlab no ejecuta (salta) el grupo de comandos en
cuesti
on.
Las sentencias condicionales pueden ser parte de un programa o de una funcion.
IF-END
Un enunciado if simple tiene la siguiente forma:
>> if condici
on
>> sentencias
>> end
Si la condici
on (una expresi
on l
ogica) es verdadera, se ejecutan las sentencias y sigue a end y si la comparaci
on es falsa, el programa salta inmediatamente al enunciado que sigue a end.
IF-ELSE-END
El if simple le permite ejecutar una serie de enunciados si una condicion es verdadera y saltar dichos pasos
si la condici
on es falsa y la cl
ausula else le permite ejecutar un conjunto de enunciados si la comparaci
on es
verdadera y un conjunto diferente de enunciados si la comparacion es falsa.

7
>> if condici
on
>> bloque 1
>> else
>> bloque 2
>> end
IF-ELSEIF-ELSE-END
Esta estructura incluye dos sentencias condicionales, lo que hace posible ejecutar uno de entre tres grupos
de instrucciones diferentes.
>> if condici
on 1
>> bloque 1
>> elseif condici
on 2
>> bloque 2
>> else
>> bloque 3
>> end
Es necesario destacar que se puede introducir mis de una sentencia elseif y por tanto asociar nuevos grupos
de instrucciones que se ejecutar
an o no dependiendo de las condiciones establecidas.
Adem
as, la sentencia else es opcional. Esto significa que en el caso de que haya varios elseif y ning
un else, si
alguna condici
on de los elseif es verdadera, los comandos seran ejecutados, pero en otro caso (todas las condiciones de los elseif son falsas) no se ejecutan ni se realizara ninguna operacion.
Ejemplo 0.0.8.
>> n = input(Ingrese su edad:);
>> if n < 16
>> disp(Lo siento. Tendr
a que esperar)
>> elseif n < 18
>> disp(Puede obtener un permiso provisional para conducir)
>> elseif n < 70
>> disp(Puede obtener una licencia est
andar)
>> else
>> disp(Los mayores de 70 requieren una licencia especial)
>> end
BUCLE WHILE
La sentencia while (mientras que) se usa para que Matlab repita un bloque de instrucciones mientras que se
cumpla una condici
on dada, la cual es evaluada cada que se termina la ultima instruccion del bloque.
En Matlab, la forma general de representar un ciclo es la siguiente:
>> while condicion
>> Sentencias
>> end
El while en la pr
actica es usado para realizar procesos que impliquen una secuencia repetitiva de instrucciones.
Un ejemplo real puede ser que yo subo una escalera mientras haya escalones para subir, cada que subo un
escal
on eval
uo si hay mas escalones, en el momento que no hayan escalones no subo mas. Es decir paro el ciclo,
si lo fueramos a codificar seria de la siguiente manera:
>> while (haya escalones)
>> subir un escal
on
>> end
Ejemplo 0.0.9. Crear un programa en Matlab que imprima los n
umeros desde cero hasta un numero ingresado
por el usuario.

8
En este ejemplo debemos tener en cuenta que instruccion debe repetirse?, esta es, imprimir un n
umero,
ahora debemos conocer hasta cuando se realiza la condicion?, para nuestro caso es hasta que Matlab llegue
hasta el n
umero ingresado por el usuario. Tambien debemos saber en donde comenzaremos?, el problema nos
dice que en cero.
Como nos dicen que imprimir los n
umeros desde cero hasta un n
umero ingresado por el usuario, entenderemos
que el ciclo se incrementa de uno en uno.
La soluci
on queda de la siguiente forma:
>> n = input(Ingrese un n
umero mayor que cero: );
>> i = 0; % esto porque el problema nos dice que comencemos en cero. Variable contadora
>> while i <= n % esta es la condici
on que debe cumplirse para continuar el ciclo
>> disp(i); % instrucci
on 1
>> i = i + 1; % instrucci
on 2, conocida como incremento del contador
>> end
Debemos tener en cuenta que el bloque de instrucciones que va dentro del while pueden ser instrucciones de
cualquier tipo, incluidas:
Sentencias if , f or.
Incrementos.
Declaraci
on de variables.
Lectura de valores ingresados por el usuario.
Impresi
on de mensajes.
Incluso otros while.
SWITCH-CASE
La estructura switch-case se usa con frecuencia cuando existe una serie de opciones de ruta de programaci
on
para una variable dada, dependiendo de su valor.
Switch-case es similar a if/else/elseif. De hecho, cualquier cosa que pueda hacer con switch/case se podria
hacer con if/else/elseif.
Se trata de una estructura que le permite elegir entre m
ultiples salidas, con base en ciertos criterios. Los
criterios pueden ser un escalar (un numero) o una cadena.
>> switch variable
>> case opci
on 1
>> c
odigo a ejecutar si la variable es igual a opcion 1
>> case opci
on 2
>> c
odigo a ejecutar si la variable es igual a opcion 2
.
>> ..
>> case opci
on N
>> c
odigo a ejecutar si la variable es igual a opcion N
>> otherwise
>> c
odigo a ejecutar por default
>> end
Ejemplo 0.0.10.
>> ciudad = input(Ingrese el nombre de una ciudad entre comillas simples: )
>> switch ciudad
>> case Veracruz
>> disp(Costo del boleto: $ 345 )
>> case Puebla
>> disp(Costo del boleto: $ 150)
>> case Oaxaca
>> disp(Costo del boleto: $ 100)

9
>> otherwise
>> disp(No hay servicio de transporte a esa ciudad.)
>> end
FORMATOS DE ENTRADA Y SALIDA
Con el comando input se pueden asignar valores escalares, vectores y matrices a las variables dadas. El comando input tambien se puede utilizar para asignar una cadena a una variable. Esto se puede realizar de dos formas:
introduciendo la cadena entre comillas simples o utilizando una opcion del comando input que permite concretar
que los caracteres ser
an introducidos como cadena.Ejemplo: nombrev ariable = input(0 M ensaje0 ,0 s0 ).En este
caso, la cadena se puede introducir sin comillas simples.
Ejemplo 0.0.11.
>> b = 6; %se da el valor de la base del rectangulo
>> h = 4; %se da el valor de la altura del rectangulo
>> area = b h; %se calcula el area y se imprime
Ejemplo 0.0.12.
%se deben tener almacenados los valores de las variable b y h, base y altura respectivamente
area = b h; %se calcula el area y se imprime
Ejemplo 0.0.13.
b = input(ingrese la base: ); %pide el valor de la base
h = input(ingrese la altura: ); %pide el valor de la altura
area = b h;
MATLAB posee varios comandos que pueden ser utilizados para generar mensajes y salidas mas elaboradas,
los comandos de uso muy frecuente son: fprintf y disp.
El comando disp muestra Ia salida en la pantalla, mientras que el comando fprintf se puede usar para visualizar
un resultado en Ia pantalla o para guardarlo en un archivo.
El comando disp se utiliza para visualizar un texto o el contenido de una variable sin mostrar su nombre. El
formato de este comando es: disp(nombre de variable) o disp(Mensaje).
Cada vez que se ejecuta el comando disp, la salida aparece en una nueva lnea. Solo se puede visualizar una sola
variable en un comando disp.
En algunos casos es necesario visualizar datos en forma de tabla. Esto se puede hacer definiendo una variable
de tipo array con los elementos a visualizar y luego utilizar el comando disp para mostrar el array.
Ejemplo 0.0.14.
>> x = [1 2 3 4 5];
>> disp(Los valores de la matriz x son: );
>> disp(x);
Ejemplo 0.0.15.
>> disp(Hola,Buenos das!);
>> disp(Soy el programa MATLAB);
>> nombre=input(Quien eres tu?,s);
>> disp([Hola,nombre]);
>> respuesta=input(Las computadoras son adorables,no?,s);
>> disp([respuesta,?]);
>> disp(Las computadoras son muy u
tiles.);
>> disp(Las vas a usar mucho durante tus estudios);
>> disp(Buena suerte con ellas);
>> disp(Bye, bye);

You might also like