Anda di halaman 1dari 31

Matlab y su entorno de ventanas

Matlab es un programa inicialmente diseñado para realizar operaciones matriciales (MATrix


LABoratory) que ha ido evolucionando hasta convertirse en una herramienta muy utilizada
en distintos campos de la Ingeniería y de las Ciencias en general. Entorno de ventanas
Matlab consiste en un entorno de ventanas con tres partes:
Command Window: es la ventana en la que se escriben las instrucciones que se quieren
ejecutar.
Current Directory / Workspace: la primera muestra el contenido de la carpeta de trabajo.
La dirección de la carpeta de trabajo se puede cambiar mediante la barra desplegable que
aparece encima de las ventanas.
La ventana Workspace muestra información sobre las variables y objetos definidos.
Command History: esta ventana muestra los últimos comandos (instrucciones) ejecutados

En la línea superior del entorno de ventanas encontramos la barra de men´u. Los men´us
File y Edit son los habituales en cualquier programa en entorno Windows. Los men´us
Desktop y Windows permiten configurar el aspecto del entorno de trabajo. El menú Debug
es de utilidad a la hora de programar en Matlab. El menú Help permite acceder a la ayuda
del programa. Para obtener ayuda sobre una orden interna de Matlab, también podemos
escribir en la ventana de comandos help seguido del nombre de la instrucción concreta.
(Ejemplo: help log como aparece en la figura).
Las Cajas de Herramientas (“Toolboxes”) de MATLAB
La funcionalidad y versatilidad de MATLAB se amplia enormemente con paquetes de
software adicionales a su plataforma básica. A estos grupos de programas se los conoce
como “Toolboxes”, y fueron desarrollados para usarlos en diversas aplicaciones. Agrupan
un conjunto de archivos-M (programas desarrollados en lenguaje MATLAB), orientados al
estudio y desarrollo de tópicos específicos en varias disciplinas. A continuación, se hará
referencia a algunos de los “Toolboxes” más conocidos.
C Procesamiento de Señales (“Signal Processing Toolbox”): Contiene comandos para
procesamiento digital de señales (series de tiempo) para una y dos dimensiones. Incluye
funciones para diseño y análisis de filtros digitales y estimación de espectros de potencia
(FFT).
C Control de Sistemas (“Control System Toolbox”): Contiene comandos para Teoría de
Sistemas e Ingeniería de Control, con especial énfasis en las técnicas de espacio de estado.
C Identificación de Sistemas (System Identification Toolbox”): Fue desarrollada por Lennart
Ljung y contiene comandos para modelación paramétrica e identificación de sistemas. Se
especializa en modelos de estimación basados en registros de datos entrada-salida o en
series de tiempo.
C Optimización (“Optimization Toolbox”): Fue escrita por Andrew Grace y contiene diversos
comandos para la optimización de funciones lineales y no-lineales.
C Redes Neuronales (“Neural Network Toolbox”): Fue desarrollada por Howard Demuth y
Mark Beale, y contiene funciones para diseñar y simular redes neuronales. Incluye los tipos
de redes más conocidas, así como reglas de aprendizaje y funciones de entrenamiento.
Control Robusto (“Robust Control Toolbox”): La desarrollaron Richard Chiang y Michael
Sofonov, e incluye comandos para el diseño de sistemas de control robusto. Contiene
herramientas que soportan las últimas técnicas de desarrollo en esta disciplina, como LQG,
H2 y H4. C Análisis y Síntesis µ (“µ-Analysis and Synthesis Toolbox”): Fue escrita por Gary J.
Balas, John Doyle, Keith Glover, Andy Packard y Roy Smith, y comprende una colección de
archivos-M que contienen funciones para el análisis y diseño de sistemas de control lineal
y robusto, usando técnicas de análisis y síntesis µ.
C Spline (“Spline Toolbox”): Fue escrita por Carl de Boor y posee un conjunto de archivos-M
para trabajar sobre el ajuste de curvas con “SPLINE”, sobre funciones definidas o de
naturaleza arbitraria. Estas funciones son útiles para modelar curvas, resolver ecuaciones y
determinar aproximaciones funcionales que requieren este tipo de tratamientos.
C SIMULINK: Es un paquete para simulación dinámica de sistemas, en ambiente gráfico.
Permite modelar sistemas a través del dibujo de diagramas de bloques, mediante una
operación interactiva. Puede utilizarse con sistemas lineales o no-lineales, de tiempo
continuo o discreto, mono y multivariables. Por lo general, los “TOOLBOXES” incluyen
funciones para trabajar bajo SIMULINK.

Formatos numéricos
MATLAB permite que el usuario defina el formato numérico con que entregará los
resultados. Las opciones son las siguientes:
Short: Formato de punto fijo con 5 dígitos.
Long: Formato de punto fijo con 15 dígitos.
Hex: Formato hexadecimal.
Loose: Se usa por defecto, e imprime una línea en blanco después de cada línea mostrada.
Compact: Elimina las líneas en blanco definidas a través del comando anterior.
clc, clear, who, whos, date, dir pwd, lookfor, sound, help

LOAD, SAVE
load handel
sound(y,Fs)
load gong
player=audioplayer(y,Fs)
play(player)
El Comando diary
Los comandos save y load crean ficheros binarios o ASCII con el estado de la sesión, pero no
sirven para guardar todo lo que hemos ido tecleando y ha ido saliendo en la ventana de
comandos. Existe una forma sencilla de almacenar todos estos datos en un fichero de texto.
Esto se hace con el comando diary. El uso general es de la forma siguiente:
>> diary filename.txt
De esta forma se va escribiendo en el fichero filename.txt todo lo que aparece, línea tras
línea, en la ventana de comandos de MATLAB con posterioridad a la utilización del
comando. Esto significa que si se quiere guardar todo lo que vaya apareciendo en la ventana
de comandos desde el principio, se debe utilizar este comando en cuanto se empieza la
sesión.
Si se quiere interrumpir el proceso basta escribir
>> diary off
y para reanudarlo de nuevo
>> diary on

Líneas de comentarios
Para MATLAB el carácter tanto por ciento (%) indica comienzo de comentario. Cuando
aparece en una línea de comandos, el programa supone que todo lo que va desde ese
carácter hasta el fin de la línea es un comentario y por lo tanto no lo lee. Raramente se usan
en la ventana de comandos, pero son muy útiles cuando se escriben programas (ficheros
M) tal y como veremos más adelante.
Manipulación de ficheros
Los comandos dir, delete y pwd implementan un conjunto de comandos del sistema
operativo que corre por debajo de MATLAB.

Operaciones Relacionales
 C < menor que
 C <= menor o igual que
 C > mayor que
 C >= mayor o igual que
 C == igual a
 C ~= distinto a
ans=1 verdadero ans=0 Falso
Roundings Functions: round, fix, ceil, floor
Funciones Matemáticas
MATLAB tiene un conjunto de funciones matemáticas elementales, que se aplican sobre
cada uno de los elementos de un arreglo. Algunas de las principales son:

Otras funciones

 nthroot(x,n)
 sind(x)
 sinh(x)
 factorial(x)

funciones anidadas
Operaciones con componentes. Para multiplicar los vectores a y b componente a componente,
ejec´utese el siguiente comando de MATLAB.

.*

Ejemplo
Comandos y funciones:
size, min, max, length, sum
Ejemplo
Mas sobre Gráficos
MATLAB contiene una variedad de funciones para presentación y visualización de datos,
basados en objetos gráficos como lineas y superficies, pudiéndose modificar su apariencia.
Estas modificaciones se ejecutan en un bajo nivel de manipulación. Sin embargo, por la
potencialidad incorporada a las funciones 2D ó 3D implementadas, en la mayor parte de
los casos basta con operar en alto nivel.
Gráficos 2D
MATLAB incluye un grupo de funciones para visualización de datos como gráficos en 2D,
algunas de las cuales se describirán a continuación.
Funciones de Graficación Elementales
En la siguiente lista se resumen las funciones para graficación de curvas. Estas funciones
difieren sólo en la forma de definir la escala de los ejes para graficar los datos.
plot - crea un gráfico de vectores o columnas de matrices.
loglog - crea un gráfico usando escala logarítmica en ambos ejes.
semilogx - crea un gráfico usando escala logarítmica para el eje x y una escala lineal para el
eje y.
semilogy - crea un gráfico usando escala logarítmica para el eje y y una escala lineal para el
eje x.
Además, incluye las siguientes sentencias para agregar títulos, rotular los ejes, grillas y
textos sobre los gráficos realizados.
title - agrega un título al gráfico.
xlabel - adiciona un rótulo al eje x.
ylabel - adiciona un rótulo al eje y. C text - agrega un texto en un lugar especificado.
gtext - ubica un texto sobre el gráfico usando el mouse.
grid - activa las líneas de grilla.
Resolución de sistemas de ecuaciones algebraicas lineales

4a+8b-3c=20
3a+2c=12
2ª+3b+c=0
Ax=B com x=[a b c]’
x=A-1B o x=A\B
A=[4 8 3;3 0 2;2 3 1]
b=[20 12 0]’
x=[-7.5349 -3.2558 -5.3023]’

Números complejos: abs, angle, real, imag, conj, plot(z), compass(z)


Scripts y Funciones
El nombre que se utiliza para los programas en MATLAB es el de M-files o ficheros M. Hay
dos tipos de ficheros M: los scripts y las funciones. Son el equivalente a programas,
funciones, subrutinas o procedimientos de otros lenguajes de programación como
FORTRAN, C, Pascal o Java. Los ficheros M son, por lo tanto, secuencias de comandos de
MATLAB que se almacenan en ficheros y que tienen algún propósito concreto. Un fichero
M puede hacer referencia a otros ficheros M e incluso a sí mismos (es decir, está permitida
la autorecursividad). Los ficheros M son especialmente apropiados para experimentar con
algoritmos escribiéndolos en un fichero sobre el que poder hacer correcciones en vez de
reescribir cada vez que se quiere experimentar una larga lista de comandos guardar el
resultado de un experimento numérico, como una lista de comandos y variables que
producen un determinado resultado numérico o gr´afico, construir programas que pueden
ser utilizados con posterioridad varias veces, o, simplemente, intercambiar con algún amigo
o colega ficheros de mutuo interés.
En la página web de Mathworks mencionada en la Introducción pueden encontrarse
numerosos ficheros M escritos con distintos propósitos, desde puramente computacionales
a didácticos o por puro placer.

Hay dos tipos de ficheros M:


Sripts o ficheros de comandos. Por lo general no tienen argumentos de entrada ni de salida
y operan con las variables del espacio de trabajo. Es decir, recogen variables ya existentes
e interactúan con ellas para producir resultados numéricos o gr´aficos y quiz ‘a nuevas
variables.
Funciones. Deben contener una primera línea en la que aparece la palabra function. Se
diferencian de los scripts en que aceptan entradas y devuelven salidas. Las variables
internas son locales a la función (salvo que sean declaradas como global)
Ya hemos visto en la sección anterior cómo hacer ficheros M de tipo “script”. Simplemente
son ficheros que ejecutan sucesivamente varios comandos de MATLAB con un objetivo
específico y siempre que se ejecutan producen el mismo resultado. Volveremos sobre ellos
más adelante para recalcar su diferencia con el otro tipo de ficheros M, y que son los más
importantes: las funciones. Las funciones en MATLAB guardan una gran similitud con las
funciones en lenguaje C o Pascal.
Al igual que con los “scripts” debemos escribir estas líneas en un fichero de texto y salvarlo
con el nombre miexp1.m en un directorio (o carpeta) que esté en el path de MATLAB; por
ejemplo, en nuestro directorio de trabajo. Debe observarse que ahora el nombre del fichero
sólo puede ser el que hemos dado a la función. Debemos tener cuidado, además, con que
el nombre de la función no coincida con un nombre ya existente en el path de MATLAB.
Como las distribuciones de MATLAB incorporan infinidad de funciones debemos elegir
nombres significativos para nosotros pero no demasiado standard; por ejemplo, podemos
empezar los nombres de nuestras funciones con el prefijo mi... o escoger un nombre en
euskera, etc.
Al escribir una función en MATLAB debes seguir unas pocas, simples e importantes reglas:
El fichero debe empezar con la palabra function y tiene la siguiente estructura
function variables de salida= Nombre de la función(variables de entrada) % % Comentarios
que definen completamente las variables que deben pasarse a la función % (variables de
entrada) y el resultado que produce la función (variables de salida) % cuerpo de la función:
comandos de MATLAB
En algún sitio del cuerpo de la función se debe pasar a la variable de salida el valor deseado.
Los comentarios que definen completamente la función deben hacerse inmediatamente
después de la definición de la función. Esto es importante porque cuando en la ventana de
comandos se escriba help nombre de la funcion, MATLAB responderá escribiendo los
comentarios que ahí se escriban. Opcionalmente, y es recomendable hacerlo, se pueden
escribir comentarios en otros lugares del cuerpo de la función para clarificar el objetivo de
uno o varios de los comandos que se utilizan. Estos comentarios deben ir siempre
precedidos del símbolo %.
Las variables de entrada y salida son parámetros formales (es decir, letras). Cuando se llama
a la función para que realice la acción que se desea, deben ser sustituidos por parámetros
reales (es decir, números, vectores, matrices,...).
Las variables que se definen en el interior de la función (en nuestro caso t y k) son variables
locales. Puede haber otras con el mismo nombre en el espacio de trabajo de MATLAB sin
ningún problema.
El fichero que contiene la función debe estar en el path de MATLAB.
Lo importante de las funciones de MATLAB, sean nativas o creadas por nosotros mismos,
es que pueden ser llamadas por cualquier otro programa de MATLAB, bien sea un “script”
u otra función.
Por ejemplo, cree un archivo llamado magicrank.m que contenga estos comandos de
MATLAB:
% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
r(n) = rank(magic(n));
end
r
bar(r)

Si escribe la instrucción
magicrank

MATLAB puede ejecutar los comandos, calcular el rango de los primeros 30 cuadrados
mágicos y producir un gráfico de barras del resultado. Una vez concluida la ejecución del
archivo, las variables n y r se conservan en el área de trabajo.

Funciones
Las funciones son archivos que pueden aceptar argumentos de entrada y devolver
argumentos de salida. Los nombres del archivo y de la función deben ser iguales. Las
funciones operan en variables dentro de su propia área de trabajo, en un espacio separado
del área de trabajo a la que se accede desde la línea de comandos de MATLAB.
La función rank es un buen ejemplo. El archivo rank.m está disponible en la carpeta
toolbox/matlab/matfun

Puede ver el archivo con


type rank
Este es el archivo:
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.

s = svd(A);
if nargin==1
tol = max(size(A)') * max(s) * eps;
end
r = sum(s > tol);

La primera línea de una función comienza con la palabra clave function. En ella se
proporciona el nombre de la función y el orden de los argumentos. En este caso, hay hasta
dos argumentos de entrada y un argumento de salida.
Las siguientes líneas, hasta la primera línea en blanco o ejecutable, son líneas de
comentarios que contienen el texto de ayuda. Estas líneas se imprimen cuando se escribe
help rank

La primera línea del texto de ayuda es la línea H1. MATLAB muestra esta línea cada vez
que se usa el comando lookfor o se solicita help en una carpeta.
El resto del archivo está conformado por el código ejecutable de MATLAB que define la
función. La variable s introducida en el cuerpo de la función, así como las variables de la
primera línea, r, A y tol, son locales de la función; están separadas de cualquier otra
variable del área de trabajo de MATLAB.
En este ejemplo se ilustra un aspecto de las funciones de MATLAB que no se encuentra
comúnmente en otros lenguajes de programación: el número variable de argumentos. La
función rank se puede usar de varias formas diferentes:
rank(A)
r = rank(A)
r = rank(A,1.e-6)

Muchas funciones operan de esta forma. Si no se proporciona un argumento de salida, el


resultado se almacena en ans. Si no se proporciona el segundo argumento de entrada, la
función calcula un valor predeterminado. Dentro del cuerpo de una función, hay dos
cantidades llamadas nargin y nargout que indican la cantidad de argumentos de entrada y
salida implicados en cada uso particular de la función. La función rank utiliza nargin, pero
no necesita usar nargout.
Variables simbólicas
No se permite: f=2*x+1
Se define: Syms x
f=2*x+1 (cambiar por x2-1)
Subs(f,3) evalua f para x=3
diff(f) entrega la derivada de f
int(f) entrega la integral de f
int(f,2,4) integral definida entre 2 y 4
ezplot(f) da la gráfica con dominio por defecto
ezplot(f,[-3 3]) da la gráfica de f a en el dominio definido
Otro caso
Sysm y
g=2*x +2*y
subs(g,[x y],[3 2])
diff(f,x) derivada respecto a x
graficando g:
ezsurf(g)
rotate3d
operaciones directas a partir de las variables simbólicas declaradas:
3*x+2
(x2-1)/(x+1)
expand((x2-1)/(x+1))
simplyfi((x2-1)/(x+1)) ans x-1
Funciones anidadas
Es posible definir funciones dentro del cuerpo de otra función. Se dice que estas se
encuentran anidadas dentro de la función exterior. Una función anidada contiene algunos o
todos los componentes de cualquier otra función. En este ejemplo, la función B está anidada
en la función A:
function x = A(p1, p2)
...
B(p2)
function y = B(p3)
...
end
...
end

Al igual que otras funciones, una función anidada tiene su propia área de trabajo, que contiene
las variables que utiliza la función. Sin embargo, también tiene acceso a las áreas de trabajo
de todas las funciones en las cuales está anidada. Así, por ejemplo, una función anidada en
cualquier nivel dentro de la función principal puede leer o sobrescribir una variable que tenga
un valor asignado por esa función principal. De manera similar, una variable asignada en una
función anidada puede ser leída o sobrescrita por cualquiera de las funciones que contengan
dicha función.
Variables globales
Si desea que más de una función comparta una copia única de una variable, simplemente
declare la variable como global en todas las funciones. Haga lo mismo en la línea de
comandos si desea que el área de trabajo base tenga acceso a la variable. La declaración
global debe producirse antes de que la variable se utilice por primera vez en una función.
Aunque no es obligatorio, el uso de mayúsculas para los nombres de las variables globales
ayuda a distinguirlas de otras variables. Por ejemplo, cree una nueva función en un archivo
llamado falling.m:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;

Luego, ingrese de forma interactiva las instrucciones


global GRAVITY
GRAVITY = 32;
y = falling((0:.1:5)');

Las dos instrucciones globales hacen que el valor asignado a GRAVITY en la línea de
comandos también esté disponible dentro de la función. Luego, puede modificar GRAVITY de
manera interactiva y obtener nuevas soluciones sin editar ningún archivo.
Programación de MATLAB
Como ya se ha dicho varias veces –incluso con algún ejemplo– MATLAB es una
aplicación que se puede programar muy fácilmente. De todas formas, como lenguaje de
programación pronto verá que no tiene tantas posibilidades como otros lenguajes (ni tan
complicadas...). Se comenzará viendo las bifurcaciones y bucles, y la lectura y escritura
interactiva de variables, que son los elementos básicos de cualquier programa de una cierta
complejidad.
5.1 Bifurcaciones y bucles
Se van a introducir aquí los primeros conceptos de programación. MATLAB posee un
lenguaje de programación que –como cualquier otro lenguaje– dispone de sentencias para
realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra operación
según se cumpla o no una determinada condición. La Figura 12 muestra tres posibles
formas de bifurcación.

Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos.
Mientras que en C/C++/Java el "cuerpo" de estas sentencias se determinaba mediante llaves
{...}, en MATLAB se utiliza la palabra end con análoga finalidad. Existen también algunas
otras diferencias de sintaxis.
La Figura 13 muestra dos posibles formas de bucle, con el control situado al principio o al
final del mismo. Si el control está situado al comienzo del bucle es posible que las
sentencias no se ejecuten ninguna vez, por no haberse cumplido la condición cuando se
llega al bucle. Sin embargo, si la condición está al final del bucle las sentencias se
ejecutarán por lo menos una vez, aunque la condición no se cumpla. Muchos lenguajes de
programación disponen de bucles con control al principio (for y while en C/C++/Java) y al
final (do … while en C/C++/Java). En MATLAB no hay bucles con control al final del
bucle, es decir, no existe la construcción análoga a do ... while.
Las bifurcaciones y bucles no sólo son útiles en la preparación de programas o de ficheros
*.m. También se aplican con frecuencia en el uso interactivo de MATLAB, como se verá
más adelante en algunos ejemplos.
5.1.1 SENTENCIA IF
En su forma más simple, la sentencia if se escribe en la forma siguiente (obsérvese que –a
diferencia de C/C++/Java– la condición no va entre paréntesis, aunque se pueden poner si
se desea)12:
if condicion sentencias end
Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones
como se desee, y que tiene la forma:
if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else %
opción por defecto para cuando no se cumplan las condiciones 1,2,3 bloque4 end
donde la opción por defecto else puede ser omitida: si no está presente no se hace nada en
caso de que no se cumpla ninguna de las condiciones que se han chequeado.
Una observación muy importante: la condición del if puede ser una condición matricial, del
tipo A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la
condición se cumple, es necesario que sean iguales dos a dos todos los elementos de las
matrices A y B. Basta que haya dos elementos diferentes para que las matrices no sean
iguales, y por tanto las sentencias del if no se ejecuten. Análogamente, una condición en la
forma A∼=B exige que todos los elementos sean diferentes dos a dos. Bastaría que hubiera
dos elementos iguales para que la condición no se cumpliese. En resumen:
if A==B exige que todos los elementos sean iguales dos a dos if A∼=B exige que todos los
elementos sean diferentes dos a dos
Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo de
condiciones matriciales. Por ejemplo, la función isequal(A, B) devuelve un uno si las dos
matrices son idénticas y un cero en caso de que difieran en algo.
5.1.2 SENTENCIA SWITCH
La sentencia switch realiza una función análoga a un conjunto de if...elseif concatenados.
Su forma general es la siguiente:
switch switch_expresion case case_expr1, bloque1 case {case_expr2, case_expr3,
case_expr4,...} bloque2 ... otherwise, % opción por defecto bloque3 end
Al principio se evalúa la switch_expresion, cuyo resultado debe ser un número escalar o
una cadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el
bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a
switch_expresion se ejecutan las sentencias correspondientes a otherwise. Según puede
verse en el ejemplo anterior, es posible agrupar varias condiciones dentro de unas llaves
(constituyendo lo que se llama un cell array o vector de celdas, explicado en el Apartado
4.4); basta la igualdad con cualquier elemento del cell array para que se ejecute ese bloque
de sentencias. La “igualdad” debe entenderse en el sentido del operador de igualdad (==)
para escalares y la función strcmp() para cadenas de caracteres). A diferencia de
C/C++/Java13, sólo se ejecuta uno de los bloques relacionado con un case.
5.1.3 SENTENCIA FOR
La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La
sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de
C/C++/Java. La siguiente construcción ejecuta sentencias con valores de i de 1 a n,
variando de uno en uno.
for i=1:n sentencias end
En el siguiente ejemplo se presenta el caso más general para la variable del bucle
(valor_inicial: incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y
luego i se va reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el
bucle se termina:
for i=n:-0.2:1 sentencias end
En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados.
La variable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles
valores):
for i=1:m for j=1:n sentencias end end
Una última forma de interés del bucle for es la siguiente (A es una matriz):
for i=A sentencias end
en la que la variable i es un vector que va tomando en cada iteración el valor de una de las
columnas de A.
5.1.4 SENTENCIA WHILE
La estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente:
while condicion sentencias end
donde condicion puede ser una expresión vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya
algún o algunos elementos true. El bucle se termina cuando todos los elementos de
condicion son false (es decir, cero).
5.1.5 SENTENCIA BREAK
Al igual que en C/C++/Java, la sentencia break hace que se termine la ejecución del bucle
más interno de los que comprenden a dicha sentencia.
5.1.6 SENTENCIAS TRY...CATCH...END
La construcción try...catch...end permite gestionar los errores que se pueden producir en
tiempo de ejecución. Su forma es la siguiente:
try sentencias1 catch sentencias2 end
En el caso de que durante la ejecución del bloque sentencias1 se produzca un error, el
control de la ejecución se transfiere al bloque sentencias2. Si la ejecución transcurriera
normalmente, sentencias2 no se ejecutaría nunca. MATLAB dispone de una función lasterr
que devuelve una cadena de caracteres con el mensaje correspondiente al último error que
se ha producido. En la forma lasterr(’’) pone a cero este contador de errores, y hace que la
función lasterr devuelva la matriz vacía [] hasta que se produzca un nuevo error.
5.2 Lectura y escritura interactiva de variables
Se verá a continuación una forma sencilla de leer variables desde teclado y escribir
mensajes en la pantalla del PC. Más adelante se considerarán otros modos más generales –y
complejos– de hacerlo.
5.2.1 FUNCIÓN INPUT
La función input permite imprimir un mensaje en la línea de comandos de MATLAB y
recuperar como valor de retorno un valor numérico o el resultado de una expresión tecleada
por el usuario. Después de imprimir el mensaje, el programa espera que el usuario teclee el
valor numérico o la expresión. Cualquier expresión válida de MATLAB es aceptada por
este comando. El usuario puede teclear simplemente un vector o una matriz. En cualquier
caso, la expresión introducida es evaluada
con los valores actuales de las variables de MATLAB y el resultado se devuelve como
valor de retorno. Véase un ejemplo de uso de esta función:
» n = input('Teclee el número de ecuaciones')
Otra posible forma de esta función es la siguiente (obsérvese el parámetro ’s’):
» nombre = input('¿Cómo te llamas?','s')
En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se
almacena en la cadena nombre. Así pues, en este caso, si se teclea una fórmula, se almacena
como texto sin evaluarse.
5.2.2 FUNCIÓN DISP
La función disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz,
pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las
cadenas de caracteres son un caso particular de vectores. Considérense los siguientes
ejemplos de cómo se utiliza:
» disp('El programa ha terminado') » A=rand(4,4) » disp(A)
Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos
formas de imprimir la matriz A.

Anda mungkin juga menyukai