¡Descarga el matlab aprendizaje y más Guías, Proyectos, Investigaciones en PDF de Competencias en Matlab solo en Docsity!
Aprenda Informática ...
Escuela Superior de Ingenieros Industriales
Industri Injineruen Goimailako Eskola
UNIVERSIDAD DE NAVARRA - NAFARROAKO UNIBERTSITATEA
San Sebastián, Agosto 1998
Aprenda Matlab 5.
como si estuviera en primero
Javier García de Jalón • José Ignacio Rodríguez Alfonso Brazález • Patxi Funes • Alberto Larzabal
Índice página i
- INTRODUCCIÓN ÍNDICE
- 1.1 Acerca de este Manual
- 1.2 El programa MATLAB
- 1.3 Uso del Help
- 1.4 El entorno de trabajo de MATLAB
- 1.4.1 Path Browser : establecer el camino de búsqueda ( search path )
- 1.4.2 Editor&Debugger : editor de ficheros y depurador de errores
- 1.4.3 Workspace Browser : El espacio de trabajo de MATLAB
- 1.5 Control de los formatos de salida y de otras opciones de MATLAB
- OPERACIONES CON MATRICES Y VECTORES
- 2.1 Definición de matrices desde teclado
- 2.2 Operaciones con matrices
- 2.3 Tipos de datos
- 2.3.1 Números reales de doble precisión
- 2.3.2 Números complejos
- 2.3.3 Cadenas de caracteres
- 2.4 Variables y expresiones matriciales
- 2.5 Otras formas de definir matrices
- 2.5.1 Tipos de matrices predefinidos
- 2.5.2 Formación de una matriz a partir de otras
- 2.5.3 Direccionamiento de vectores y matrices a partir de vectores
- 2.5.4 Operador dos puntos (:)
- 2.5.5 Matriz vacía A[ ]
- 2.5.6 Definición de vectores y matrices a partir de un fichero
- 2.5.7 Definición de vectores y matrices mediante funciones y declaraciones
- 2.6 Operadores relacionales
- 2.7 Operadores lógicos
- FUNCIONES DE LIBRERÍA
- 3.1 Características generales de las funciones de MATLAB
- 3.2 Equivalencia entre comandos y funciones
- 3.3 Funciones matemáticas elementales que operan de modo escalar
- 3.4 Funciones que actúan sobre vectores
- 3.5 Funciones que actúan sobre matrices
- 3.5.1 Funciones matriciales elementales:
- 3.5.2 Funciones matriciales especiales
- 3.5.3 Funciones de factorización y/o descomposición matricial
- 3.6 Más sobre operadores relacionales con vectores y matrices
- 3.7 Otras funciones que actúan sobre vectores y matrices
- OTROS ASPECTOS DE MATLAB
- 4.1 Guardar valores de variables y estados de una sesión
- 4.2 Guardar sesión y copiar salidas
- 4.3 Líneas de comentarios
- 4.4 Funciones para cálculos con polinomios
- 4.5 Fecha y hora: Medida de tiempos y de esfuerzo de cálculo
- 4.6 Profiler
- 4.7 Llamada a comandos del sistema operativo y a otras funciones externas
- 4.8 Funciones de función
- 4.8.1 Integración numérica
- 4.8.2 Ecuaciones no lineales y optimización
- 4.8.3 Integración numérica de ecuaciones diferenciales
- 4.8.4 Las funciones eval , feval y evalin
- GRÁFICOS BIDIMENSIONALES ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página ii
- 5.1 Funciones gráficas 2D elementales
- 5.1.1 Función plot
- 5.1.2 Estilos de línea y marcadores en la función plot
- 5.1.3 Añadir líneas a un gráfico ya existente
- 5.1.4 Comando subplot
- 5.1.5 Control de los ejes
- 5.2 Control de ventanas gráficas: función figure
- 5.3 Otras funciones gráficas 2-D
- 5.3.1 Función fplot
- 5.3.2 Función fill para polígonos
- 5.4 Entrada de puntos con el ratón
- 5.5 Preparación de películas o "movies"
- 5.6 Impresión de las figuras en impresora láser
- GRÁFICOS TRIDIMENSIONALES
- 6.1 Tipos de funciones gráficas tridimensionales
- 6.1.1 Dibujo de líneas: función plot3
- 6.1.2 Dibujo de mallados: funciones meshgrid, mesh y surf
- 6.1.3 Dibujo de líneas de contorno: funciones contour y contour3
- 6.2 Utilización del color en gráficos 3-D
- 6.2.1 Mapas de colores
- 6.2.2 Imágenes y gráficos en pseudocolor
- 6.2.3 Dibujo de superficies faceteadas
- 6.2.4 Otras formas de las funciones mesh y surf
- 6.2.5 Formas paramétricas de las funciones mesh , surf y pcolor
- 6.2.6 Otras funciones gráficas 3D
- 6.2.7 Elementos generales: ejes, puntos de vista, líneas ocultas,
- PROGRAMACIÓN DE MATLAB
- 7.1 Bifurcaciones y bucles
- 7.1.1 Sentencia if
- 7.1.2 Sentencia switch
- 7.1.3 Sentencia for
- 7.1.4 Sentencia while
- 7.1.5 Sentencia break
- 7.1.6 Sentencias try...catch...end
- 7.2 Lectura y escritura interactiva de variables
- 7.2.1 función input
- 7.2.2 función disp
- 7.3 Ficheros *.m
- 7.3.1 Ficheros de comandos
- 7.3.2 Definición de funciones
- 7.3.3 Help para las funciones de usuario
- 7.3.4 Help de directorios
- 7.3.5 Sub-funciones
- 7.3.6 Funciones privadas
- 7.3.7 Funciones *.p
- 7.3.8 Variables persistentes
- 7.3.9 Variables globales
- 7.4 Otros tipos de datos de MATLAB
- 7.4.1 Cadenas de caracteres
- 7.4.2 Hipermatrices (arrays de más de dos dimensiones)
- 7.4.3 Estructuras
- 7.4.4 Vector o Matriz de celdas (Cell Array)
- 7.5 Entrada y salida de datos
- 7.5.1 Importar datos de otras aplicaciones
- 7.5.2 Exportar datos a otras aplicaciones
- 7.6 Lectura y escritura de ficheros Índice página iii
- 7.6.1 Funciones fopen y fclose
- 7.6.2 Funciones fscanf , sscanf , fprintf y sprintf
- 7.6.3 Funciones fread y fwrite
- 7.6.4 Ficheros de acceso directo
- 7.7 Recomendaciones generales de programación
- FUNDAMENTOS DE LAS INTERFACES GRÁFICAS CON MATLAB
- 8.1 Estructura de los gráficos de MATLAB
- 8.1.1 Objetos gráficos de MATLAB
- 8.1.2 Identificadores ( Handles )
- 8.2 Propiedades de los objetos
- 8.2.1 Funciones set() y get()
- 8.2.2 Propiedades por defecto
- 8.2.3 Funciones de utilidad
- 8.3 Creación de controles gráficos: comando uicontrol
- 8.3.1 Color del objeto ( BackgroundColor)
- 8.3.2 Acción a efectuar por el comando ( Callback )
- 8.3.3 Control Activado/Desactivado ( Enable)
- 8.3.4 Alineamiento Horizontal del titulo ( HorizontalAlignment )
- 8.3.5 Valor Máximo ( Max )
- 8.3.6 Valor Mínimo ( Min )
- 8.3.7 Identificador del objeto padre ( Parent )
- 8.3.8 Posición del Objeto ( Position )
- 8.3.9 Nombre del Objeto ( String )
- 8.3.10 Tipo de Control (S tyle )
- 8.3.11 Unidades ( Units )
- 8.3.12 Valor ( Value )
- 8.3.13 Visible ( Visible )
- 8.4 Tipos de uicontrol
- Botones ( pushbuttons )
- 8.4.2 Botones de selección ( check boxes )
- 8.4.3 Botones de opción ( radio buttons )
- 8.4.4 Barras de desplazamiento ( scrolling bars o sliders )
- 8.4.5 Cajas de selección desplegables ( pop-up menus )
- 8.4.6 Cajas de texto ( static textboxes )
- 8.4.7 Cajas de texto editables ( editable textboxes )
- Marcos ( frames )
- 8.5 Creación de menús
- 8.6 Descripción de las propiedades de los menús
- 8.6.1 Acelerador ( Accelerator )
- 8.6.2 Acción a efectuar por el menú ( Callback )
- 8.6.3 Creación de submenus ( Children )
- 8.6.4 Menú activado/desactivado ( Enable )
- 8.6.5 Nombre del menú ( Label )
- 8.6.6 Control del objeto padre ( Parent )
- 8.6.7 Posición del Menú ( Position )
- 8.6.8 Separador ( Separator )
- 8.6.9 Visible ( Visible )
- 8.7 Ejemplo de utilización del comando uimenu
- 8.8 Menús contextuales (uicontextmenu)
- CONSTRUCCIÓN INTERACTIVA DE INTERFACES DE USUARIO (GUIDE)
- 9.1 Guide Control Panel
- 9.2 El Editor de Propiedades (Property Editor)
- 9.3 El Editor de Llamadas (Callback Editor)
- 9.4 El Editor de Alineamientos (Alignment Editor)
- 9.5 El Editor de Menús (Menu Editor)
- 9.6 Programación de callbacks ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página iv
- 9.6.1 Algunas funciones útiles
- 9.6.2 Algunas técnicas de programación
- ANEXO A: DEBUGGER ALFANUMÉRICO DE MATLAB
- 10.1 ¿Qué es un debugger?
- 10.2 Comandos del debugger alfanumérico
- 10.3 Utilización del debugger
- 10.4 Ejemplo de utilización del debugger alfanumérico
- 10.4.1 Inicio de una sesión de debugger
- 10.4.2 Ejecución el fichero *.m
- 10.4.3 Comprobación del valor de las variables.
- 10.4.4 Cambio de espacio de trabajo.
- 10.4.5 Creación de una nueva variable.
- 10.4.6 Fin del proceso de debug
ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página 2
potencia de MATLAB, se puede comenzar por escribir la siguiente línea, a continuación del prompt.
Al final hay que pulsar intro.
» A=rand(6), B=inv(A), BA* A = 0.9501 0.4565 0.9218 0.4103 0.1389 0. 0.2311 0.0185 0.7382 0.8936 0.2028 0. 0.6068 0.8214 0.1763 0.0579 0.1987 0. 0.4860 0.4447 0.4057 0.3529 0.6038 0. 0.8913 0.6154 0.9355 0.8132 0.2722 0. 0.7621 0.7919 0.9169 0.0099 0.1988 0. B = 5.7430 2.7510 3.6505 0.1513 -6.2170 -2. -4.4170 -2.5266 -1.4681 -0.5742 5.3399 1. -1.3917 -0.6076 -2.1058 -0.0857 1.5345 1. -1.6896 -0.7576 -0.6076 -0.3681 3.1251 -0. -3.6417 -4.6087 -4.7057 2.5299 6.1284 0. 2.7183 3.3088 2.9929 -0.1943 -5.1286 -0. ans = 1.0000 0.0000 0 0.0000 0.0000 -0. 0.0000 1.0000 0.0000 0.0000 -0.0000 0. 0 0 1.0000 -0.0000 -0.0000 0. 0.0000 0 -0.0000 1.0000 -0.0000 0. -0.0000 0.0000 -0.0000 -0.0000 1.0000 0. -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.
En realidad, en la línea de comandos anterior se han escrito tres instrucciones diferentes,
separadas por comas. Como consecuencia, la respuesta del programa tiene tres partes también, cada
una de ellas correspondiente a una de las instrucciones. Con la primera instrucción se define una
matriz cuadrada (6x6) llamada A , cuyos elementos son números aleatorios entre cero y uno (aunque
aparezcan sólo 4 cifras, han sido calculados con 16 cifras). En la segunda instrucción se define una
matriz B que es igual a la inversa de A. Finalmente se ha multiplicado B por A , y se comprueba que
el resultado es la matriz unidad.
Otro de los puntos fuertes de MATLAB son los gráficos, que se verán con más detalle en una
sección posterior. A título de ejemplo, se puede teclear la siguiente línea y pulsar intro :
» x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Función seno(x)')
En la figura 2 se puede observar que se
abre una nueva ventana en la que aparece
representada la función sin(x). Esta figura tiene
un título "Función seno(x)" y una cuadrícula o
"grid". En realidad la línea anterior contiene
también varias instrucciones separadas por
comas o puntos y comas. En la primera se crea
un vector x con valores entre -4 y 4 separados
por una centésima. A continuación se crea un
vector y , cada uno de cuyos elementos es el
seno del correspondiente elemento del vector x.
Después se dibujan los valores de y en
ordenadas frente a los de x en abscisas. Las dos
últimas instrucciones establecen la cuadrícula y
el título.
Un pequeño aviso antes de seguir
adelante. Es posible recuperar comandos anteriores de MATLAB y moverse por dichos comandos
con las teclas-flechas ↑ y ↓. Al pulsar la primera de dichas flechas aparecerá el comando que se
Figura 2. Gráfico de la función seno(x).
Capítulo 1: Introducción página 3
había introducido inmediatamente antes. De modo análogo es posible moverse sobre la línea de
comandos con las teclas ← 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.
Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal se
pueden utilizar las funciones clc y home.
Si se desea salir del programa, basta teclear los comandos quit o exit , o bien elegir Exit
MATLAB en el menú File (también se puede utilizar el Alt+F4 de toda la vida).
1.3 Uso del Help
MATLAB 5.2 dispone de un excelente Help con el que se
puede encontrar la información que se desee. La figura 3
muestra las distintas opciones que aparecen en el menú Help.
1. Help Window , Se abre la ventana de la figura 4, en la que
se puede buscar ayuda sobre la función o el concepto que
se desee.
2. Help Tips. Ofrece ideas prácticas para utilizar la ayuda.
3. Help Desk. Se abre un browser de Internet ( Netscape
Communicator , en el caso de la figura 5) que permite
acceder a toda la información sobre MATLAB en formato HTML. Esta información es
equivalente a los manuales impresos del programa. Desde la parte inferior de esta página,
mediante el enlace Online Manuals (in PDF) se puede acceder a la versión *.pdf ( Portable
Document Format ) de los manuales de MATLAB. Este formato es menos adecuado para
consultar que el HTML, pero mucho más adecuado para imprimir y revisar luego sobre papel. El
formato *.pdf requiere del programa gratuito Adobe Acrobat Reader 3..
4. Examples and Demos. Se abre una ventana que da acceso a un buen número de ejemplos
resueltos con MATLAB, cuyos resultados se presentan gráficamente de diversas formas. Es
bastante interesante recorrer estos ejemplos para hacerse idea de las posibilidades del programa.
Es asimismo bastante instructivo.
Figura 3. Menú Help de Matlab.
Figura 4. Ventana inicial de Help Window. Figura 5. Ventana inicial de Help Desk.
Capítulo 1: Introducción página 5
5. Comprueba si hay un fichero llamado nombre1.mex , nombre1.dll o nombre1.m en el
directorio actual , cuyo contenido se obtiene con el comando dir. El directorio actual se
cambia con el comando cd.
6. Comprueba si hay ficheros llamados nombre1.mex , nombre1.dll o nombre1.m en los
directorios incluidos en el search path de MATLAB.
Estos pasos se realizan por el orden indicado. En cuanto se encuentra lo que se está buscando
se detiene la búsqueda y se utiliza el fichero que se ha encontrado. Conviene saber que, a igualdad
de nombre, los ficheros *.mex tienen precedencia sobre los ficheros *.m que están en el mismo
directorio.
El concepto de directorio actual es importante en MATLAB. Para cambiar de directorio
actual se utiliza el comando cd (de change directory ), seguido del nombre del directorio, para el
cual se puede utilizar un path absoluto o relativo. Para subir un nivel en la jerarquía de directorios
se utiliza el comando cd .. , y cd ../.. para subir dos niveles. MATLAB permite utilizar tanto la barra
normal (/) como la barra invertida ().
El Path Browser es el programa que ayuda a definir la lista de directorios donde MATLAB
debe buscar los ficheros de comandos y las
funciones, tanto del sistema como de usuario. Con
el comando Set Path del menú File aparece el
cuadro de diálogo de la figura 6, en el cual se
muestra la lista de directorios en la que MATLAB
buscará. Para añadir (o quitar) un directorio a esta
lista se debe ejecutar el comando Add to Path (o
Remove Path ) en el menú Path de dicho cuadro
de diálogo, con lo cual aparece un nuevo cuadro
de diálogo mostrado en el figura 7. El nuevo
directorio se puede añadir al comienzo o final de
la lista. El orden de la lista es muy importante,
porque refleja el orden de la búsqueda: si una
función está en dos directorios, se utilizará la que
primero se encuentre.
Para incluir desde la lista de comandos un
directorio nuevo al comienzo del search path , se
utiliza también el comando path , que concatena
dos listas de directorios (sólo se deben utilizar
directorios que realmente existan en el PC), como
por ejemplo:
» path('c:\inf1\matlab', path)^2
mientras que para añadir el nuevo directorio al final de la lista, se utiliza:
» path(path, 'c:\inf1\prac9798')
El comando addpath permite añadir uno o más directorios al search path. Su forma general
puede verse en los siguientes ejemplos:
» addpath 'c:\Matlab' 'c:\Temp' -end » addpath 'c:\Matlab\Pruebas' 'c:\Temp\Pruebas' -begin
(^2) El comando path dentro del paréntesis de la función devuelve la lista de directorios anterior.
Figura 6. Path Browser.
Figura 7. Añadir un directorio al Path.
ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página 6
donde la opción por defecto (cuando no se pone ni -begin ni -end ) es añadir al comienzo de la lista.
Después de ejecutar estos comandos conviene comprobar cómo ha quedado modificado el search
path (recuérdese que los directorios deben existir en realidad).
No es difícil borrar las líneas que se han introducido: por una parte, los cambios no son
permanentes y dejarán de surtir efecto al salir de MATLAB y volver a entrar (salvo que se guarden
como opciones estables). Además se puede utilizar el comando rmpath (de remove path ), al que se
le pasan la lista de directorios a eliminar del search path. Por ejemplo, el comando:
» rmpath 'c:\Matlab' 'c:\Temp'
borra del search path los dos directorios indicados.
El search path inicial o por defecto de MATLAB está contenido en un fichero llamado
matlabrc.m , en el directorio principal del programa. En las instalaciones de red (como la de las
salas de PCs de la ESIISS), éste es un fichero que se ejecuta automáticamente al arrancar MATLAB
y es un fichero controlado por el administrador del sistema. Para cambios permanentes y
personalizados en el propio search path se debe utilizar otro fichero llamado startup.m , que
también se ejecuta automáticamente al arrancar el programa. Un posible contenido de este fichero
puede ser el siguiente:
» format compact » addpath 'g:\Matlab\Practicas' -end » disp('¡Hola!')
1.4.2 EDITOR&DEBUGGER : EDITOR DE FICHEROS Y DEPURADOR DE ERRORES
En MATLAB tienen particular imñortancia los ficheros-M (o M-files ). Son ficheros de texto
ASCII, con la extensión *.m , que contienen conjuntos de comandos o definición de funciones
(estos últimos son un poco más complicados y se verán más adelante). La importancia de estos
ficheros-M es que al teclear su nombre en la línea de comandos y pulsar Intro , se ejecutan uno tras
otro todos los comandos contenidos en dicho fichero.
MATLAB dispone de un editor que permite tanto crear y modificar estos ficheros, como
ejecutarlos paso a paso para ver si contienen errores (proceso de Debug o depuración). La figura 8a
muestra la ventana principal del Editor/Debugger , en la que se ha tecleado un fichero-M llamado
Prueba01.m , que contiene seis comandos^3. El Editor muestra con diferentes colores los diferentes
(^3) Las seis sentencias de prueba01.m son las siguientes (reagrupadas en dos líneas):
A=randn(3,3); B=A’; C=inv(A); D=C*A; disp(’Hola!’); disp(’Ya he terminado’);
a) Creación de un fichero de comandos. b) Utilización del Debugger.
Figura 8. El Editor/Debugger de MATLAB.
ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página 8
» whos Name Size Bytes Class
A 3x3 72 double array B 3x3 72 double array C 3x3 72 double array D 3x3 72 double array
Grand total is 36 elements using 288 bytes
Éstas son las variables del espacio de trabajo base (el de la línea de comandos de MATLAB).
Más adelante se verá que cada función tiene su propio espacio de trabajo, con variables cuyos
nombres no interfieren con las variables de los otros espacios de trabajo.
Se puede obtener de modo gráfico una información análoga con el Workspace Browser , que
se activa con el comando Show Workspace del menú File de MATLAB, o clicando en el botón
correspondiente de la barra de herramientas ( ). La figura 9a muestra el aspecto inicial del
Workspace Browser cuando se abre. Haciendo doble clic sobre la matriz A aparece una nueva
solapa en la ventana del Editor&Debugger en la que se muestran y pueden ser modificados los
elementos de dicha matriz (ver figura 9b).
a) Opciones de tipo General. b) Opciones de Font para la ventana de comandos.
Figura 10. Comando Preferences del menú File.
a) Aspecto inicial del Workspace Browser. b) Visualización de la matriz A.
Figura 9. El Workspace Browser de MATLAB.
Capítulo 1: Introducción página 9
1.5 Control de los formatos de salida y de otras opciones de MATLAB
Los formatos de salida en la ventana principal de MATLAB se pueden controlar fácilmente a partir
del cuadro de diálogo que se abre con el comando Preferences del menú File. En las figuras 10a y
10b se ven dos de los tres cuadros de diálogo a los que se accede al elegir ese comando.
El cuadro de diálogo de la figura 10a permite elegir un editor de programas distinto del que
trae MATLAB, así como elegir el directorio donde están los ficheros Help. Respecto a los formatos
numéricos con que MATLAB muestra los resultados (recuérdese que siempre calcula con la
máxima precisión), se pueden activar las mismas posibilidades por medio de comandos tecleados en
la línea de comandos de MATLAB. Los más importantes de estos comandos son los siguientes:
format short coma fija con 4 decimales ( defecto )
format long coma fija con 15 decimales
format hex cifras hexadecimales
format bank números con dos cifras decimales
format short e notación científica con 4 decimales
format short g notación científica o decimal, dependiendo del valor
format long e notación científica con 15 decimales
format long e notación científica o decimal, dependiendo del valor
format loose introduce algunas líneas en blanco en la salida (defecto)
format compact elimina las líneas en blanco citadas ( opción recomendada )
format rat expresa los números racionales como cocientes de enteros
MATLAB aplica un factor de escala general a las matrices cuando los elementos más
grandes o más pequeños son superiores o inferiores respectivamente a una determinada cantidad
3
y 10
). Hay que añadir que MATLAB trata de mantener el formato de los números que han
sido definidos como enteros (sin punto decimal). Si se elige la opción format rat el programa trata
de expresar los números racionales como cocientes de enteros.
El cuadro de diálogo Command Window Font de la figura 10b ofrece la posibilidad de elegir
el tipo de letra –así como el tamaño y el color, tanto de las letras como del fondo– con la que se
escribe en la ventana de comandos de MATLAB. Es mejor utilizar tipos de letra de tamaño
constante ( Fixedsys o Courier New ), para que la salida se alinee bien en la pantalla.
Capítulo 2: Operaciones con vectores y matrices página 11
» B=A'
B =
Ahora ya están definidas las matrices A y B , y es posible seguir operando con ellas. Por
ejemplo, se puede hacer el producto B*A (deberá resultar una matriz simétrica):
» B*A
ans = 66 78 90 78 93 108 90 108 126
En MATLAB se accede a los elementos de un vector poniendo el índice entre paréntesis (por
ejemplo x(3) ó x(i) ). Los elementos de las matrices se acceden poniendo los dos índices entre
paréntesis, separados por una coma (por ejemplo A(1,2) ó A(i,j) ). Las matrices se almacenan por
columnas (aunque se introduzcan por filas , como se ha dicho antes), y teniendo en cuenta esto
puede accederse a cualquier elemento de una matriz con un sólo subíndice. Por ejemplo, si A es una
matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).
Invertir una matriz es casi tan fácil como trasponerla. A continuación se va a definir una
nueva matriz A -no singular- en la forma:
» A=[1 4 -3; 2 1 5; -2 5 3]
A =
Ahora se va a calcular la inversa de A y el resultado se asignará a B. Para ello basta hacer uso
de la función inv( ) (la precisión o número de cifras con que se muestra el resultado se puede
cambiar con el menú File/Preferences/General ):
B=inv(A) B = 0.1803 0.2213 -0. 0.1311 0.0246 0. -0.0984 0.1066 0.
Para comprobar que este resultado es correcto basta pre-multiplicar A por B ;
» B*A
ans = 1.0000 0.0000 0. 0.0000 1.0000 0. 0.0000 0.0000 1.
De forma análoga a las matrices, es posible definir un vector fila x en la forma siguiente (si
los tres números están separados por blancos o comas , el resultado será un vector fila):
» x=[10 20 30] % vector fila x = 10 20 30
MATLAB considera comentarios todo lo que va desde el carácter tanto por ciento ( % ) hasta
el final de la línea.
Por el contrario, si los números están separados por intros o puntos y coma (;) se obtendrá un
vector columna :
ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página 12
» y=[11; 12; 13] % vector columna y = 11 12 13
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si
se intenta sumar los vectores x e y se obtendrá el siguiente mensaje de error:
» x+y ??? Error using ==> + Matrix dimensions must agree.
Estas dificultades desaparecen si se suma x con el vector traspuesto de y :
» x+y' ans = 21 32 43
Aunque ya se ha visto en los ejemplos anteriores el estilo sencillo e intuitivo con el que
MATLAB opera con matrices y vectores, a continuación se va a estudiar este tema con un poco más
de detenimiento.
2.2 Operaciones con matrices
MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Se han
visto ya los operadores suma (+), producto (*) y traspuesta ('), así como la función invertir inv( ).
Los operadores matriciales de MATLAB son los siguientes:
+ adición o suma
* 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
Estos operadores se aplican también a las variables o valores escalares, aunque con algunas
diferencias^4. Todos estos operadores son coherentes con las correspondientes operaciones
matriciales: no se puede por ejemplo sumar matrices que no sean del mismo tamaño. Si los
operadores no se usan de modo correcto se obtiene un mensaje de error.
Los operadores anteriores se pueden aplicar también de modo mixto , es decir con un operando
escalar y otro matricial. En este caso la operación con el escalar se aplica a cada uno de los
elementos de la matriz. Considérese el siguiente ejemplo:
» A=[1 2; 3 4]
A =
(^4) En términos de C++ se podría decir que son operadores sobrecargados , es decir, con varios significados distintos
dependiendo del contexto, es decir, de sus operandos.
ESIISS: Aprenda Matlab 5.2 como si estuviera en Primero página 14
resto = -0.
Aunque no es una forma demasiado habitual, también se puede escribir un sistema de
ecuaciones lineales en la forma correspondiente a la traspuesta de la ecuación (1):
yB = c (3)
donde y y c son vectores fila ( c conocido). Si la matriz B es cuadrada e invertible, la solución de
este sistema se puede escribir en las formas siguientes:
y = c *inv( B ) (4a)
y = c / B (4b)
En este caso, el operador división-derecha por una matriz (/) equivale a postmultiplicar por la
inversa de la matriz. Si se traspone la ecuación (3) y se halla la solución aplicando el operador
división-izquierda de obtiene:
y’ = ( B’ )\ c’ (5)
Comparando las expresiones (4b) y (5) se obtiene la relación entre los operadores división-
izquierda y división-derecha (MATLAB sólo tiene implementado el operador división-izquierda ):
c / B = (( B’ )\ c’ ) ’ (6)
En MATLAB existe también la posibilidad de aplicar elemento a elemento los operadores
matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por ejemplo:
» [1 2 3 4]^
??? Error using ==> ^ Matrix must be square.
» [1 2 3 4].^ ans = 1 4 9 16
» [1 2 3 4][1 -1 1 -1]* ??? Error using ==> * Inner matrix dimensions must agree.
» [1 2 3 4].[1 -1 1 -1]* ans = 1 -2 3 -
2.3 Tipos de datos
Ya se ha dicho que MATLAB es un programa preparado para trabajar con vectores y matrices.
Como caso particular también trabaja con variables escalares (matrices de dimensión 1). MATLAB
trabaja siempre en doble precisión , es decir guardando cada dato en 8 bytes, con unas 15 cifras
decimales exactas. Ya se verá más adelante que también puede trabajar con cadenas de caracteres
( strings ) y, desde la versión 5.0, también con otros tipos de datos: Matrices de más dos
dimensiones , vectores y matrices de celdas , estructuras y clases y objetos. Algunos de estos tipos
de datos más avanzados se verán en la última parte de este manual.
Capítulo 2: Operaciones con vectores y matrices página 15
2.3.1 NÚMEROS REALES DE DOBLE PRECISIÓN
Los elementos constitutivos de vectores y matrices son números reales almacenados en 8 bytes (
bytes para la mantisa y 11 para el exponente de 2; entre 15 y 16 cifras decimales equivalentes). Es
importante saber cómo trabaja MATLAB con estos números y los casos especiales que presentan.
MATLAB mantiene una forma especial para los números muy grandes (más grandes que los
que es capaz de representar), que son considerados como infinito. Por ejemplo, obsérvese cómo
responde el programa al ejecutar el siguiente comando:
Warning: Divide by zero ans = Inf
Así pues, para MATLAB el infinito se representa como inf ó Inf. MATLAB tiene también
una representación especial para los resultados que no están definidos como números. Por ejemplo,
ejecútense los siguientes comandos y obsérvense las respuestas obtenidas:
Warning: Divide by zero ans = NaN » inf/inf ans = NaN
En ambos casos la respuesta es NaN , que es la abreviatura de Not a Number. Este tipo de
respuesta, así como la de Inf , son enormemente importantes en MATLAB, pues permiten controlar
la fiabilidad de los resultados de los cálculos matriciales. Los NaN se propagan al realizar con ellos
cualquier operación aritmética, en el sentido de que, por ejemplo, cualquier número sumado a un
NaN da otro NaN. MATLAB tiene esto en cuenta. Algo parecido sucede con los Inf.
MATLAB dispone de tres funciones útiles relacionadas con las operaciones de coma flotante.
Estas funciones, que no tienen argumentos, son las siguientes:
eps devuelve la diferencia entre 1.0 y el número de coma flotante inmediatamente
superior. Da una idea de la precisión o número de cifras almacenadas. En un PC,
eps vale 2.2204e-016.
realmin devuelve el número más pequeño con que se puede trabajar (2.2251e-308)
realmax devuelve el número más grande con que se puede trabajar (1.7977e+308)
2.3.2 NÚMEROS COMPLEJOS
En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos , con parte
real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos. Para ver
como se representan por defecto los números complejos, ejecútense los siguientes comandos:
» a=sqrt(-4) a = 0 + 2.0000i » 3 + 4j ans = 3.0000 + 4.0000i
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i y la j para
representar el número imaginario unidad (en la salida, sin embargo, puede verse que siempre
aparece la i ). Si la i o la j no están definidas como variables, puede intercalarse el signo (*). Esto no
es posible en el caso de que sí estén definidas, porque entonces se utiliza el valor de la variable. En