Está en la página 1de 7

3 Prctica. Matlab 7.

0 pgina 1

PROGRAMACIN EN MATLAB
PRCTICA 03
INTRODUCCIN A MATLAB 7.0

1. INTRODUCCIN A MATLAB 7.0 ......................................................................................................... 1


1.1 OPERACIONES BSICAS CON MATRICES ................................................................................................ 1
1.2 GENERACIN DE MATRICES DE FORMA AUTOMTICA ........................................................................... 2
1.3 FUNCIONES PARA EL MANEJO DE MATRICES ......................................................................................... 3
1.4 EL OPERADOR DOS PUNTOS (:).......................................................................................................... 3
Generacin de secuencias de nmeros................................................................................................ 4
Referencia a filas y/o columnas........................................................................................................... 4
Referencia a filas y/o columnas no consecutivas. ............................................................................... 5
1.5 OPERACIONES CON VECTORES .............................................................................................................. 5
1.6 FICHEROS DE DATOS ............................................................................................................................. 5
Funcin save........................................................................................................................................ 5
Funcin load........................................................................................................................................ 6
1.7 UTILIZACIN DE FICHEROS *.M............................................................................................................. 6
1.8 UTILIZACIN DEL DEBUGGER ............................................................................................................... 7

1. INTRODUCCIN A MATLAB 7.0

Esta prctica es la primera en la que se utiliza MATLAB. Se supone que dispones de


los apuntes Aprenda Matlab como si estuviera en Primero, que estn a la venta en
Reprografa. Se debe comenzar por crear un directorio en el disco G:\ llamado
G:\Informatica1\Practica03. A continuacin se arranca el programa MATLAB por medio
del men Start/Programs y se coloca como directorio de trabajo el creado previamente,
utilizando los comandos cd (para cambiar el directorio activo) y dir (para ver el contenido
del directorio activo). El que el directorio creado pase a ser el directorio activo se puede
conseguir tecleando en la ventana de comandos de MATLAB:
cd g:\Informatica1\Practica03
Tambin puede conseguirse el mismo efecto mediante la ventana del Path Browser.
MATLAB es un programa de clculo matricial muy potente, que se utiliza en muchas
asignaturas a lo largo de la carrera. Aunque tengas bastante experiencia con ordenadores, es
poco probable que hayas utilizado MATLAB. A lo largo de la carrera lo utilizars en muchas
asignaturas.

1.1 OPERACIONES BSICAS CON MATRICES

Los operadores matriciales de MATLAB son los siguientes:


+ adicin o suma
sustraccin o resta
* multiplicacin
' traspuesta
^ potenciacin
\ divisin-izquierda (solucin de Ax=B)
/ divisin-derecha (solucin de xA=B)
Con el fin de familiarizarte con este tipo de notacin, prueba la siguiente secuencia de
instrucciones en MATLAB observando detenidamente los resultados:
A= [ 1 2 3; 4 5 6; 9 7 8]

Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra


Informtica 1 y Fundamentos de Computadores pgina 2

B= [ -1 0 3; 6 1 16; 9 4 2]
C=A*B
A
B
inv(A)*B
A\B
B*inv(A)
B/A
Nota: inv(A) es una funcin que realiza el clculo de la inversa de la matriz A.
A modo de ejercicio se propone el clculo de la expresin matricial (A-3B+C)C-1, donde las
matrices A, B y C vienen dadas por:
1 1 0 1 3 2 2 1 3
A = 5 12 13 B = 6 0 3 C = 7 1 9

1 0 4 3 7 13 1 4 3

El resultado debera ser el siguiente:


ans =
2.5556 -0.4444 -2.2222
5.1587 0.3492 -1.8730
-6.2698 -2.7937 3.9841
Una caracterstica importante de MATLAB y que facilita enormemente su uso es que
con las flechas y del teclado se pueden recuperar los anteriores comandos tecleados.
Dichos comandos pueden ser ejecutados y/o modificados sin tenerlos que teclear de nuevo.
El comando modificado se ejecuta pulsando la tecla Intro.

1.2 GENERACIN DE MATRICES DE FORMA AUTOMTICA

MATLAB permite definir una serie de matrices de forma automtica sin necesidad de tener
que introducir los elementos uno por uno. Las matrices que se pueden generar de esta
manera cumplen alguna peculiaridad que las distingue del resto. Veamos en este apartado
algunas de las funciones que hacen esto posible.
eye(4) forma la matriz unidad de tamao (4x4)
zeros(3,5) forma una matriz de ceros de tamao (3x5)
zeros(4) dem de tamao (4x4)
ones(3) forma una matriz de unos de tamao (3x3)
ones(2,4) dem de tamao (2x4)
linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y
x2
logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente
entre 10^d1 y 10^d2. Si d2 es pi1, los puntos se generan entre
10^d1 y pi
rand(3) forma una matriz de nmeros aleatorios entre 0 y 1, con
distribucin uniforme, de tamao (3x3)
rand(2,5) dem de tamao (2x5)
randn(4) forma una matriz de nmeros aleatorios de tamao (4x4), con
distribucin normal, de valor medio 0 y varianza 1

1
pi es una variable predefinida en MATLAB, que como es fcil suponer representa el nmero .
TECNUN
3 Prctica. Matlab 7.0 pgina 3

magic(4) crea una matriz (4x4) con los nmeros 1, 2, ... n*n, con la
propiedad de que todas las filas y columnas suman lo mismo
diag(x) forma una matriz diagonal, en la que los elementos de la
diagonal son los elementos del vector x.
Pruebe las siguientes sentencias en MATLAB
zeros(4)
B=zeros(2,3)
ones(1,3)
ones(3,1)
A=eye(3)
eye(2)
magic(3)
C=rand(3,6)
diag([1 2 3])
x=[ -1 3 1 4], diag(x)
y=linspace(0, 10, 21)
z=logspace(1, 6, 6)
z=logspace(0, 6, 13)

1.3 FUNCIONES PARA EL MANEJO DE MATRICES

Aparte de las operaciones bsicas con matrices, MATLAB es capaz de realizar clculos de
nivel superior gracias al conjunto de funciones que posee. Aqu se presentan algunas de ellas
que pueden resultar de inters para el alumno.
B = inv(A) calcula la inversa de A
d = det(A) devuelve el determinante d de la matriz cuadrada A.
t = trace(A) devuelve la traza t (suma de los elementos de la diagonal) de una
matriz cuadrada A
[m,n] = size(A) devuelve el nmero de filas m y de columnas n de una matriz
rectangular A
i = size(A,1) devuelve el nmero de filas de A
j = size(A,2) devuelve el nmero de columnas de A
n = size(A) devuelve el tamao de una matriz cuadrada A
A modo de ejercicio realice el clculo del determinante y de la inversa de la siguiente matriz
cuadrada A.
1 2 3 1 0
7 5 2 1 13

A = 4 11 6 3 0
0 2 4 9 12

3 33 1 5 6

A modo de comprobacin hay que saber que el determinante vale 380.

1.4 EL OPERADOR DOS PUNTOS (:)

El operador dos puntos (:) realiza en MATLAB dos funciones distintas:


Por una parte permite definir secuencias de nmeros igualmente espaciados (progresin
aritmtica)
Por otra permite hacer referencia a todos los elementos de una fila o una columna de una
matriz.

Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra


Informtica 1 y Fundamentos de Computadores pgina 4

Generacin de secuencias de nmeros.


Es posible generar mediante MATLAB una progresin aritmtica de una forma sencilla (sin
utilizar la funcin linspace()). Por ejemplo, para generar la secuencia
[1 3 5 7 9 11 13 15 17]
basta con escribir en MATLAB
1:2:17
que tiene el siguiente significado general:
lmite inferior:espaciado:lmite superior.
En el caso en que el espaciado sea 1 se puede omitir. As para generar la secuencia
[-1 0 1 2 3 4 5 6 7 8 9]
puede hacerse
-1:1:9 o bien -1:9
Como ejercicio genera las siguientes sucesiones en MATLAB
a) [0, /12, /6, . . . 4]
b) [-7, -6.5, -6, . . . 6.5, 7]
c) [4, 3, 2, 1, 0, -1, -2]

Referencia a filas y/o columnas.


Hasta ahora no se ha explicado el acceso a filas y columnas de una matriz. Es posible
acceder a un elemento de una matriz A como
A(fila,columna)
Como ejemplo obsrvese el resultado que se obtiene en la siguiente secuencia de
operaciones, donde la matriz A es la del Ejercicio 3.
A
A(1,2)
A(3,3)
A(4,1)
Con el operador dos puntos es posible seleccionar todos los elementos de una fila o
columna. Observa el resultado de las siguientes entencias o comandos
A(2,:)
A(:,1)
A(:,3)
Adems se pueden seleccionar series de filas y columnas.
A(1:2,:) (Filas 1 y 2 y todas las columnas)
A(1:2,3) (Filas 1 y 2 y columna 3)
B = A(:,1:2) (Se crea una submatriz B con todas las filas de A
y las columnas 1 y 2)
Escriba la sentencia de MATLAB que selecciona en la matriz A del Ejercicio 3 los
elementos que estn en las filas 1 y 2 y en las columnas 2 y 3 simultneamente.

TECNUN
3 Prctica. Matlab 7.0 pgina 5

Referencia a filas y/o columnas no consecutivas.

Para acceder a filas y/o columnas que no sean consecutivas, basta con crear un vector con las
filas y/o columnas a las que se desea acceder. Por ejemplo para extraer las filas 1 y 3 y las
columnas 2, 4 y 5 de una matriz B, se puede utilizar la siguiente secuencia de operaciones:
B=magic(5)
fil = [1, 3]
col = [2, 4, 5]
A=B(fil,col)

1.5 OPERACIONES CON VECTORES

Los vectores se pueden considerar como matrices con una fila o una columna, por lo tanto
el tratamiento de vectores desde el punto de vista matricial es el mismo que el de las
matrices. En ocasiones interesa realizar en un vector o incluso en una matriz operaciones
elemento a elemento. Por ejemplo supongamos que se desea calcular el cuadrado de cada
elemento de un vector.
Dado un vector x
x=[1 2 4 6 8]
el cuadrado de los elementos de x se obtiene como sigue
x.^2
mientras que si se intenta ejecutar el comando
x^2
el programa da un error porque las dimensiones no son acordes segn las reglas del producto
de matrices.
Obsrvese que el operador potenciacin para el clculo elemento a elemento es .^.El
conjunto de operadores que realizan clculos elemento a elemento son:
.* multiplicacin
.^ potenciacin
a.\b divide los elementos de b por los de a (a y b mismo tamao)
a./b divide los elementos de a por los de b (a y b mismo tamao)
Evidentemente la adicin y la sustraccin no requieren el punto, ya que son por
definicin operaciones elemento a elemento.
Obtenga el cubo de los nmeros naturales impares desde 1 hasta 15. Obtn asimismo
una matriz cuyos elementos sean los cuadrados de los elementos de la matriz A=magic(6).

1.6 FICHEROS DE DATOS

En muchas ocasiones es necesario guardar los resultados obtenidos en un fichero. Matlab


dispone de un tipo de ficheros que llevan la extensin .mat. Para guardar datos se utiliza la
funcin save y para recuperarlos se utiliza la funcin load.

Funcin save
La funcin save puede guardar aquellas variables que se encuentren en el Workspace.
Inicialmente vace el Workspace utilizando la funcin clear. Cree una matriz de tipo magic
de dimension 3x3 y asgnele el nombre de matriz_A. Ahora calcule su inversa y guarde el
resultado en otra matriz llamada matriz_B. Posteriormente asigne el resultado del producto
de ambas matrices a una variable llamada matriz_AxB.

Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra


Informtica 1 y Fundamentos de Computadores pgina 6

En este momento, usted tiene tres matrices en el Workspace, y vamos a proceder a


guardarlas en un fichero que despus recuperaremos mediante la funcin load.
Escriba a continuacin: >> save Matrices
Bien a travs del explorador de Windows, bien a travs del Current Directory de
Matlab, podr observar que ha aparecido un nuevo fichero llamado Matrices.mat.
Escriba ahora: >> save Matriz_A_y_B matriz_A matriz_B
De nuevo podr comprobar que aparece un nuevo fichero llamado Matriz_A_y_B.mat.

Funcin load
Vace nuevamente el Workspace utilizando la funcin clear. Ahora el Workspace est vaco
y vamos a recuperar los ficheros de datos guardados anteriormente.
Escriba: >>load Matrices.
El resultado es que en el Worskspace reaparecen las variables matriz_A, matriz_B y
matriz_AxB, con sus respectivos contenidos.
Vace nuevamente el Workspace utilizando la funcin clear y escriba:
>>load Matriz_A_y_B
Observar que en el Workspace slo aparece la variable matriz_A y la variable matriz_B,
pero no la matriz_AxB.
Para mas informacin escriba:
>>help load
Y tambin:
>>help save

1.7 UTILIZACIN DE FICHEROS *.M

Cree un subdirectorio dentro de G:\Informatica1\Practica03 que se llame Ejercicio0101 y


site el directorio de trabajo de Matlab dentro de l.
Los ficheros .m son el centro de la programacin de MATLAB. En este primer
ejercicio vas a realizar un ejemplo muy sencillo de fichero .m.
Un fichero .m no es ms que un fichero de texto (puro texto, sin ningn tipo de
formato) que contiene comandos de MATLAB. Estos comandos se ejecutan sucesivamente,
uno detrs de otro, en la misma forma en que se ejecutaran si se tecleasen desde la lnea de
comandos.
Lo que se requiere para escribir las instrucciones es un editor de texto ASCII como
puede ser Notepad. Desde la versin 5.0, MATLAB dispone de su propio editor de ficheros
*.m. Para abrirlo teclea la palabra edit y pulsa Intro. En la ventana que se abre escribe las
siguientes lneas:
clear all
disp('Resulucin del sistema de ecuaciones Ax=b')
A=rand(5)
b=rand(5,1)
x=inv(A)*b
disp('Comprobacin: A*x=')
b=A*x

TECNUN
3 Prctica. Matlab 7.0 pgina 7

y gurdalo con el nombre SistemaDeEcuaciones.m en el directorio


g:\Informatica1\Practica03\Ejercicio0101 antes creado. Ahora teclea en la lnea de
comandos de MATLAB la palabra SistemaDeEcuaciones:
>>SistemaDeEcuaciones
Esto es, el nombre del fichero sin la extensin.
En la ventana de comandos aparecern los resultados de las distintas lneas del fichero
(puesto que no se ha puesto el carcter punto y coma (;) al final de las lneas).
Nota: En el caso de que MATLAB d un error diciendo que no sabe lo que es
SistemaDeEcuaciones se debe a que el fichero no se encuentra en el directorio adecuado. En
este caso debes proceder de uno de estos dos modos:
1. Comprueba mediante la instruccin dir que el fichero SistemaDeEcuaciones .m
est en el directorio activo. Si no es as, cambia el directorio activo con el comando
cd o mediante la ventana de Current Directory.
2. Ejecuta el fichero SistemaDeEcuaciones.m con el comando run poniendo su ruta o
path completo, esto es en la forma:
run g:\Informatica1\Practica03\Ejercicio0101\SistemaDeEcuaciones

A partir de esta primera ejecucin MATLAB ya reconocer el fichero escribiendo


simplemente SistemaDeEcuaciones .
El fichero SistemaDeEcuaciones.m es un ejemplo del primero de los dos tipos de
ficheros *.m que tiene MATLAB: los llamados ficheros de comandos (script files). Existen
adems los ficheros de funciones, que permiten definir nuevas funciones a las que se les
pueden pasar argumentos, exactamente en la misma forma que se hace cuando se utiliza
det(A) o linspace(0,10,21).
Para ms informacin sobre ambos tipos de ficheros *.m ver el manual Aprenda
MATLAB como si estuviera en Primero.

1.8 UTILIZACIN DEL DEBUGGER

El editor de Matlab posibilita, mediante la colocacin de un breakpoint al margen izquierdo


de una instruccin, que se pare el programa antes de ejecutar esa instruccin. De esta manera
se puede comprobar el valor de las variables dentro del fichero y seguir el programa, a partir
de aqu, instruccin a instruccin. Se puede colocar un breakpoint por cada lnea de texto.
El uso de este recurso es fundamental para corregir los errores del programa o para
asegurarnos de estar haciendo lo que nosotros queremos. Para familiarizarte coloca un
breakpoint en la primera instruccin del fichero SistemaDeEcuaciones.m y, con las
explicaciones que hay en las pginas 7 y 8 del manual de Matlab, prueba a utilizar las 6
herramientas de que se dispone: Set/Clear Breakpoint, Clear All Breakpoints, Step In,
Single Step, Continue y Quit Debugging, y observa como posando el ratn sobre el
nombre de alguna variable escrita dentro del texto, se despliega una ventana con su
contenido. Otra manera para acceder al contenido de las variables es hacerlo directamente
desde el Workspace.

Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra

También podría gustarte