Sie sind auf Seite 1von 7

3ª Práctica. Matlab 7.

0 página 1

PROGRAMACIÓN EN MATLAB
PRÁCTICA 03
INTRODUCCIÓN A MATLAB 7.0

1. INTRODUCCIÓN A MATLAB 7.0 ......................................................................................................... 1


1.1 OPERACIONES BÁSICAS CON MATRICES ................................................................................................ 1
1.2 GENERACIÓN DE MATRICES DE FORMA AUTOMÁTICA ........................................................................... 2
1.3 FUNCIONES PARA EL MANEJO DE MATRICES ......................................................................................... 3
1.4 EL OPERADOR DOS PUNTOS (:).......................................................................................................... 3
Generación de secuencias de números................................................................................................ 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
Función save........................................................................................................................................ 5
Función load........................................................................................................................................ 6
1.7 UTILIZACIÓN DE FICHEROS *.M............................................................................................................. 6
1.8 UTILIZACIÓN DEL DEBUGGER ............................................................................................................... 7

1. INTRODUCCIÓN A MATLAB 7.0

Esta práctica es la primera en la que se utiliza MATLAB. Se supone que dispones de


los apuntes “Aprenda Matlab como si estuviera en Primero”, que están a la venta en
Reprografía. Se debe comenzar por crear un directorio en el disco G:\ llamado
G:\Informatica1\Practica03. A continuación 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
También puede conseguirse el mismo efecto mediante la ventana del Path Browser.
MATLAB es un programa de cálculo 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 utilizarás en muchas
asignaturas.

1.1 OPERACIONES BÁSICAS CON MATRICES

Los operadores matriciales de MATLAB son los siguientes:


+ adición o suma
– sustracción o resta
* multiplicación
' traspuesta
^ potenciación
\ división-izquierda (solución de Ax=B)
/ división-derecha (solución de xA=B)
Con el fin de familiarizarte con este tipo de notación, 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 Sebastián – Universidad de Navarra


Informática 1 y Fundamentos de Computadores página 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 función que realiza el cálculo de la inversa de la matriz A.
A modo de ejercicio se propone el cálculo de la expresión 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 debería ser el siguiente:


» ans =
2.5556 -0.4444 -2.2222
5.1587 0.3492 -1.8730
-6.2698 -2.7937 3.9841
Una característica 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 GENERACIÓN DE MATRICES DE FORMA AUTOMÁTICA

MATLAB permite definir una serie de matrices de forma automática 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 tamaño (4x4)
zeros(3,5) forma una matriz de ceros de tamaño (3x5)
zeros(4) ídem de tamaño (4x4)
ones(3) forma una matriz de unos de tamaño (3x3)
ones(2,4) ídem de tamaño (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 logarítmicamente
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 números aleatorios entre 0 y 1, con
distribución uniforme, de tamaño (3x3)
rand(2,5) ídem de tamaño (2x5)
randn(4) forma una matriz de números aleatorios de tamaño (4x4), con
distribución normal, de valor medio 0 y varianza 1

1
pi es una variable predefinida en MATLAB, que como es fácil suponer representa el número π.
TECNUN
3ª Práctica. Matlab 7.0 página 3

magic(4) crea una matriz (4x4) con los números 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 básicas con matrices, MATLAB es capaz de realizar cálculos de
nivel superior gracias al conjunto de funciones que posee. Aquí se presentan algunas de ellas
que pueden resultar de interés 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 número de filas m y de columnas n de una matriz
rectangular A
i = size(A,1) devuelve el número de filas de A
j = size(A,2) devuelve el número de columnas de A
n = size(A) devuelve el tamaño de una matriz cuadrada A
A modo de ejercicio realice el cálculo 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 comprobación 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 números igualmente espaciados (progresión
aritmética)
• Por otra permite hacer referencia a todos los elementos de una fila o una columna de una
matriz.

Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra


Informática 1 y Fundamentos de Computadores página 4

Generación de secuencias de números.


Es posible generar mediante MATLAB una progresión aritmética de una forma sencilla (sin
utilizar la función 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:
» límite inferior:espaciado:límite 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 obsérvese 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)
Además 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 están en las filas 1 y 2 y en las columnas 2 y 3 simultáneamente.

TECNUN
3ª Práctica. Matlab 7.0 página 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 según las reglas del producto
de matrices.
Obsérvese que el operador potenciación para el cálculo elemento a elemento es .^.El
conjunto de operadores que realizan cálculos elemento a elemento son:
.* multiplicación
.^ potenciación
a.\b divide los elementos de b por los de a (a y b mismo tamaño)
a./b divide los elementos de a por los de b (a y b mismo tamaño)
Evidentemente la adición y la sustracción no requieren el punto, ya que son por
definición operaciones elemento a elemento.
Obtenga el cubo de los números naturales impares desde 1 hasta 15. Obtén 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 extensión .mat. Para guardar datos se utiliza la
función save y para recuperarlos se utiliza la función load.

Función save
La función save puede guardar aquellas variables que se encuentren en el Workspace.
Inicialmente vacíe el Workspace utilizando la función clear. Cree una matriz de tipo magic
de dimension 3x3 y asígnele 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 Sebastián – Universidad de Navarra


Informática 1 y Fundamentos de Computadores página 6

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


guardarlas en un fichero que después recuperaremos mediante la función load.
Escriba a continuación: >> save Matrices
Bien a través del explorador de Windows, bien a través 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.

Función load
Vacíe nuevamente el Workspace utilizando la función clear. Ahora el Workspace está vacío
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.
Vacíe nuevamente el Workspace utilizando la función clear y escriba:
>>load Matriz_A_y_B
Observará que en el Workspace sólo aparece la variable matriz_A y la variable matriz_B,
pero no la matriz_AxB.
Para mas información escriba:
>>help load
Y también:
>>help save

1.7 UTILIZACIÓN DE FICHEROS *.M

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


sitúe el directorio de trabajo de Matlab dentro de él.
Los ficheros .m son el centro de la programación de MATLAB. En este primer
ejercicio vas a realizar un ejemplo muy sencillo de fichero .m.
Un fichero .m no es más que un fichero de texto (puro texto, sin ningún tipo de
formato) que contiene comandos de MATLAB. Estos comandos se ejecutan sucesivamente,
uno detrás de otro, en la misma forma en que se ejecutarían si se tecleasen desde la línea de
comandos.
Lo que se requiere para escribir las instrucciones es un editor de texto ASCII como
puede ser Notepad. Desde la versión 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 líneas:
clear all
disp('Resulución del sistema de ecuaciones Ax=b')
A=rand(5)
b=rand(5,1)
x=inv(A)*b
disp('Comprobación: A*x=')
b=A*x

TECNUN
3ª Práctica. Matlab 7.0 página 7

y guárdalo con el nombre SistemaDeEcuaciones.m en el directorio


g:\Informatica1\Practica03\Ejercicio0101 antes creado. Ahora teclea en la línea de
comandos de MATLAB la palabra “SistemaDeEcuaciones”:
>>SistemaDeEcuaciones
Esto es, el nombre del fichero sin la extensión.
En la ventana de comandos aparecerán los resultados de las distintas líneas del fichero
(puesto que no se ha puesto el carácter punto y coma (;) al final de las líneas).
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 instrucción 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 ejecución 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
además 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 más información sobre ambos tipos de ficheros *.m ver el manual “Aprenda
MATLAB como si estuviera en Primero”.

1.8 UTILIZACIÓN DEL DEBUGGER

El editor de Matlab posibilita, mediante la colocación de un breakpoint al margen izquierdo


de una instrucción, que se pare el programa antes de ejecutar esa instrucción. De esta manera
se puede comprobar el valor de las variables dentro del fichero y seguir el programa, a partir
de aquí, instrucción a instrucción. Se puede colocar un breakpoint por cada línea 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 instrucción del fichero SistemaDeEcuaciones.m y, con las
explicaciones que hay en las páginas 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 ratón 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 Sebastián – Universidad de Navarra