Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


el matlab aprendizaje, Guías, Proyectos, Investigaciones de Competencias en Matlab

guia de como usar el matlab desde cero

Tipo: Guías, Proyectos, Investigaciones

2020/2021

Subido el 29/06/2021

sergio-lopez-g
sergio-lopez-g 🇨🇴

7 documentos

1 / 107

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
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.2
como si estuviera en primero
Javier García de Jalón José Ignacio Rodríguez
Alfonso Brazález Patxi Funes Alberto Larzabal
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡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

    1. 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
    1. 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
    1. 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
    1. 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
    1. 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
    1. 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,
    1. 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
    1. 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)
    1. 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
    1. 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

  • 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

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