Sunteți pe pagina 1din 11

Tutorial de Matlab

M. I. José Antonio Morfı́n Rojas


Ingenierı́a Electrónica
Universidad Iberoamericana
Santa Fe, Ciudad de México, 14 de agosto de 2003

Resumen
Las herramientas de simulación de sistemas y procesos en general han tenido una evolución impresio-
nante en los últimos años. En la actualidad podemos simular prácticamente cualquier sistema antes de
armar un prototipo real. De esa forma pretendemos mejorar las posibilidades de que el prototipo funcio-
ne. Para el caso especı́fico de procesamiento digital de imágenes, la simulación se vuelve indispensable.
Es por eso que se utilizará Matlab, un ambiente matemático que cuenta con gran difusión en el ambiente
cientı́fico y de ingenierı́a a nivel mundial por su poder y facilidad de uso.

Índice
1. Introducción 1

2. Fundamentos 2

3. Guardando el Workspace 3

4. Matrices 3

5. Aritmética Matricial 5

6. Funciones Matriciales 6

7. Gráficos 6

8. Funciones y Scripts 7

9. Estructuras de Control de programación 8


9.1. if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9.2. switch y case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9.3. for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
9.4. while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
9.5. break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

10.Estructuras de Datos 9
10.1. Arreglos Multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
10.2. Arreglos de Celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
10.3. Texto y Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
10.4. Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1. Introducción
Matlab es un programa de computadora para personas que realizan cálculos numéricos. Comenzó como
el programa “MATrix LABoratory”que pretendı́a crear un acceso interactivo y poderoso a las bibliote-
cas Linpack y Eispack. éstas son paquetes de programación sumamente poderosos para la solución de
ecuaciones lineales y problemas de eigenvalores. El objetivo de Matlab es el de permitir a cientı́ficos e
1
ingenieros el uso de técnicas basadas en el álgebra lineal (matrices) para la solución de problemas, usando
lo más novedoso en programación, sin tener que escribir programas en los lenguajes tradicionales como
C. Nuevas funciones han sido añadidas conforme el tiempo ha pasado permitiendo en la acutalidad tener
funciones especı́ficas para muy diversas áreas del conocimiento humano.

Matlab se encuentra desarrollado para diversas plataformas de cómputo, desde computadoras perso-
nales PC hasta Macintosh, Sun y SGI. La versión de estudiante se encuentra disponible en librerı́as a un
costo razonable pero con opciones limitadas.

2. Fundamentos
Matlab se encuentra en el laboratorio de computadoras de Ingenierı́a Electrónica y de Comunicaciones
tanto en las computadoras personales IBM compatibles, las Macintosh y las Sun. La versión instalada
en la Sun y en las PC es la 5.3.1; en las Mac es la 4.2c. La versión que utilizaremos para este curso es la
5.3.1. Al iniciar Matlab, el sistema responderá con:
Commands to get started: intro, demo, help help
Commands for more information: help, whatsnew, info, subscribe
>>
El ””es el prompt de Matlab, éste no tendrá que ser tecleado. Para terminar Matlab y regresar al
sistema operativo, utilice
>> quit
Para las operaciones aritméticas se utiliza una notación bastante convencional.
>> 2+3
>> 3*4,4^2
Las potencias se efectúan antes que la división y la multiplicación, que a su vez son ejecutadas antes de
la suma y resta.
>> 2+3*4^2
Las teclas con las flechas permiten edición en la lı́nea de comando, que reduce el tiempo de tecleo y
permite la fácil corrección de errores. Presione la tecla hacia arriba y añada /2. Qué producirá este
comando?
>> 2+3*4^2/2
Los paréntesis se pueden utilizar para agrupar términos o para que éstos puedan ser leı́dos con mayor
facilidad.
>> (2+3*4^2)/2
El signo de igualdad es utilizado para asignar valores a las variables.
>> x = 3
>> y = x^2
>> y/x
Si no se asigna ningún nombre, la respuesta es almacenada en la variable ans.
>> ans, z=2*ans, ans
Aquı́, z fue definida en términos de ans. El resultado fue llamado z de tal forma que ans no cambió. Para
obtener una lista de las variables, se puede utilizar el comando who o whos.
>> who, whos
En Matlab, como en C o Fortran, las variables deben de tener un valor (que puede ser numérico, o
una cadena de carácteres, por ejemplo).√Los números complejos se obtienen automáticamente (por omi-
sión ambos i y j son inicializados con −1 ). Toda la aritmética se realiza utilizando doble precisión
(aproximadamente 16 dı́gitos decimales) aunque los resultados se despliegan en forma corta.
>> a=sqrt(2)
>> format long, b=sqrt(2)
>> a-b
>> format short
Matlab cuenta con un sistema de ayuda muy eficiente. También cuenta con un comando ”lookfor”de tal
forma que no se tiene que andar adivinando el nombre del tema en forma exacta.
2
>> help
>> help general
>> lookfor
>> helpwin

3. Guardando el Workspace
El comando ”diary sesion.txt”guardará un registro de toda la sesión en un archivo llamado ”se-
sión.txt”.
>> diary session.txt
Para guardar el valor de la variable ”x”en un archivo de texto llamado ”x.value”, utilice:
>> save x.value x -ascii
Para guardar todas las variables en un archivo llamado ”misesion.mat”en un formato que posteriormente
pueda ser vuelto a cargar, utilice:
>> save mysession
Para restaurar la sesión previamente guardada, utilice:
>> load mysession
Existen además otros archivos que utiliza Matlab. Unos son los archivos ”file.m”que son archivos de texto
que contienen funciones; éstos son editables y ejecutables. Los otros son los archivos ”file.mex”que son
funciones sólo ejecutables y se encuentran en código de máquina.

4. Matrices
Una matriz es un arreglo rectangular de números, por ejemplo:
 
1 2 3
4 5 6
define una matriz de 2 renglones, 3 columnas, 6 elementos en total. Para mayor información sobre ma-
trices consulte libros sobre Algebra Lineal o dirijase al departamento de matemáticas de la Universidad.

Matlab esta diseñado para realizar la manipulación matricial en forma sencilla. Cada variable de Matlab
es una matriz (una matriz de un reglón y una columna es un número). Reinicie Matlab y escriba lo
siguiente en la lı́nea de comando.
>> a = [1,2,3; 4,5,6]
Note que:
los elementos de una matriz deben ser escritos entre corchetes;
la matriz se escribe introduciendo primero los renglones;
los renglones se separan con un punto y coma (o nueva lı́nea), y los elementos de cada renglón se
sepran con comas o simplemente espacios. Se debe tener mucho cuidado con los espacios de más.
Para referenciar el elemento en el renglón i y columna j de la matriz a usamos a(i, j):
>> a(1,2), a(2,3)
Modificar elementos de matrices es muy sencillo:
>> a(2,3) = 10
La matriz transpuesta de una matriz es el resultado de intercambiar renglones por columnas. Matlab
utiliza ”0”después de la matriz para indicar la transposición de ésta.
>> a’
>> b=[1+i 2 + 2*i 3 - 3*i], b’
Nuevas matrices pueden formarse a partir de las anteriores de muchas formas. Escriba los siguientes
comandos. Antes de presionar la tecla ”enter”trate de predecir el resultado.

3
>> [a; a; a]
>> [a, a, a]
>> b=b’
>> c = [a; 7,8,9]
>> [a’, b]
>> [ [a; a; a], [b; b] ]
Existen muchas funciones de matrices que vienen integradas en Matlab. éstas son algunas de ellas:
>> rand(1,3), rand(2)
>> zeros(3)
>> ones(3,2)
>> eye(3), eye(2,3)
>> magic(3)
>> hilb(5)
ésta última función crea una matriz de Hilbert de 5×5, uno de los ejemplos favoritos en análisis numérico.

Utilice el punto y coma para evitar que la respuesta se despliegue en pantalla:


>> s = zeros(20,25);
Esto cobra valor cuando se trabaja con matrices de tamaños respetables. Si olvida escribir el punto y coma
puede detener el despliegue en la pantalla utilizando la combinación çntrl c”, que es el ”break”en Matlab.

Para obtener más información acerca de las funciones especiales de matrices, busque en las páginas
de matrices elementales y especiales:
>> help elmat
>> help specmat
Una parte fundamental de la sintaxis en Matlab es el operador ”:”, que produce una lista:
>> -3:3
El incremento por omisión es el 1 pero eso puede ser cambiado fácilmente.
>> x = -3 : .3 : 3
Esto lo podemos leer como: x es el nombre de la lista que comienza en -3 y que va aumentando en
incrementos de .3, hasta que 3 es alcanzado o rebasado. x puede ser considerada como una lista o un
vector o una matriz.

Esto puede ser utilizado también para extraer subvectores o submatrices:


>> x(2:12)
>> x(9:-2:1)
Cuál será el resultado de: (Tip: cúal será el resultado de x(2) o x(10))
>> x=10:100;
>> x(40:5:60)
Los ”:”también pueden ser utilizados para construir matrices:
>> a = [1:6 ; 2:7 ; 4:9]
Un uso bastante común de los ”:”es el de extraer renglones o columnas, como una especie de çomodı́n”que
producen una lista. Los siguientes comandos produce que la matiz a, sea seguida por su primer renglón
(con todas sus columnas), y por su segunda columna (con todos sus renglones). Qué cree que s(6 : 7, 2 : 4)
haga?
>> a, a(1,:), a(:,2)
>> s = rand(10,5); s(6:7, 2:4)
Las matrices también pueden construirse con programación. Por ejemplo:
>> for i=1:10,...
>> for j=1:10,...
>> t(i,j) = i/j;...
>> end;...
>> end;...
De hecho aquı́ hay dos ”loops”, uno anidado dentro del otro. Entre ambos definen:
t(1, 1), t(1, 2), t(1, 3) · · · t(1, 10), t(2, 1), t(2, 2) · · · , t(2, 10), · · · t(10, 10)
en ese orden.
>> t
4
5. Aritmética Matricial
Si es necesario, reescriba las matrices:
>> a = [1 2 3 ; 4 5 6 ; 7 8 10], b = [1 1 1]’
Los escalares multiplican matrices en forma tradicional, también la adición se realiza de la forma usual:
”elemento por elemento”:
>> 2*a, a/4
>> a + [b,b,b]
Los escalares sumados a matrices producen un resultado ”extraño”pero muy útil: el escalar es añadido a
cada elemento:
>> a+1, b+2
La multiplicación matricial requiere que las dimensiones coincidan. Si no lo hacen, se produce un mensaje
de error.
>> a*b, b*a
>> b’*a
>> a*a’ , a’ *a
>> b’ *b, b*b’
Para realizar una operación en una matriz elemento por elemento, hay que preceder la operación con un
”.”.
>> a^2, a.^2
>> a.*a, b.*b
>> 1./a
>> 1./a.^2
Una de las aplicaciones más importantes de las matrices es la representación de sistemas de ecuaciones
lineales. Si una matriz contiene los coeficientes de un sistema de ecuaciones lineales, x es el vector
(columna) que contiene las incognitas, y b is el vector (columna) del lado derecho de las ecuaciones, los
términos constantes; entonces la matriz: ax = b representa el sistema de ecuaciones. Matlab tiene un
mecanismo muy eficiente para resolver las ecuaciones lineales:
>> x = a\b
Nótese la dirección de la lı́nea de la división. Para comprobar esto verifique:
>> a*x, a*x-b
Cambie el valor de b y realice el problema de nuevo:
>> b = [1 1 0]’
>> x = a\b
>> a*x, a*x-b
Si el sistema de ecuaciones no tiene solución, una solución de mı́nimos cuadrados es entregada por Matlab.
(a ∗ x − b es tan pequeño como sea posible). Escriba:
>> a(3,3) = 9
(que la convierte en una matriz singular) y realice el problema de nuevo (utilice la tecla de la flecha hacia
arriba para llamar los últimos comandos en lugar de reescribirlos).

Otro problema similar es el de resolver xa = b (dado a y b), que se hace de la siguiente forma:
>> x = b/a
Esto puede leerse como ”b multiplicado por a inverso”. De nuevo, si no hay una solución entonces Matlab
busca una solución de mı́nimos cuadrados.

Nótese que las dimensiones de las matrices deben coincidir, esto es que ax = b debe de tener senti-
do.

5
6. Funciones Matriciales
Existe un gran número de funcions matriciales integradas en Matlab, por ejemplo:
>> det(a)
>> rank(a)
>> norm(a)
>> null(a)
Escriba:
>> a(3,3) = 10
que hace a la matriz no singular y ejecute las funciones anteriores nuevamente.

Otras funciones importantes son la inversa, eigenvalores y eigenvectores de una matriz:


>> h=hilb(5)
>> cond(a)
>> inv(h)
>> eig(h)
El error de redondeo (Round-off error) es una de las grandes preocupaciones del cómputo numérico.
Matlab realiza cómputo numérico con precisión limitada; todas las expansiones decimales son truncadas
en la posición o dı́gito 16 (aproximadamente). Incluso, si esto es aceptable para un cálculo sencillo, su
efecto puede acumularse con consecuencias inaceptables. El redondeo que efectua la computadora sobre
dos números diferentes es representado en Matlab por ”eps”; esto es, la diferencia mı́nima que debe existir
entre dos números:
>> help eps
>> eps

7. Gráficos
Matlab tiene una capacidad fuera de lo común en lo que a gráficos se refiere. Comencemos con:
>> x = -10:.1:10;
>> plot( x.^2 )
>> figure
>> plot( x, x.^2 )
>> figure
>> plot( x.^2, x )
Nótese que x debe de tener valores asignados antes de ser graficada, aunque es posible graficar.
>> plot((-10:.1:10).^2)
>> plot( x, x.*sin(x) )
>> plot( x.*cos(x), x.*sin(x) )
>> comet( x.*cos(x), x.*sin(x) )
>> plot3(x.*cos(x),x.*sin(x),x)
Funciones de dos variables pueden ser graficadas también, aunque requieren de cierta preparación.
>> [x y] = meshgrid(-3:.1:3, -3:.1:3);
>> z = x.^2 - y.^2;
>> mesh(x,y,z)
>> plot3(x,y,z)
>> surf(x,y,z)
>> contour(z)
>> help slice
Existe un ejemplo muy interesante en la página de ”help”de ”slice”; utiliza el ratón para cortar y pegar
en el prompt de Matlab.

Los siguientes comandos muestran una lista de funciones gráficas muy útiles, cada una en su propia
página de ”help”.
>> help plotxy
>> help plotxyz
>> help graphics
6
8. Funciones y Scripts
Cada comando de Matlab puede ser preparado en un editor de texto y almacenado en un archivo
para su uso posterior. Este tipo de archivo es llamado script o m-file ya que debe tener la forma ”file.m”.

Utilizando el editor, crea el siguiente archivo llamado prueba.m:


[x y] = meshgrid(-3:.1:3, -3:.1:3);
z = x.^2 - y.^2;
mesh(x,y,z);
Ahora en Matlab cambiese al directorio que contiene ”prueba.m”. y escriba:
>> prueba
El resultado es el mismo que si se hubiesen escrito las instrucciones en el prompt de Matlab.

También es posible escribir datos de la siguiente manera. En un archivo que llamado ”mimatriz.m”escriba:
A = [2, 3, 4; 5, 6, 7; 8, 9, 0]; después en el prompt de Matlab escriba:
>> mimatriz
Las funciones son como ”scripts”pero aceptan argumentos y son compilados la primera vez que son eje-
cutados por razones de velocidad.

Escriba la siguiente función llamada sqroot.m que contiene las siguientes lı́neas.

function sqroot(x)
% Compute square root by Newton’s method

% Initial guess
xstart = 1;

for i = 1:100
xnew = ( xstart + x/xstart)/2;
disp(xnew);
if abs(xnew - xstart)/xnew < eps, break, end;
xstart = xnew;
end;
Una función tiene acceso a las variables en el ”workspace”desde el cual es ejecutado, pero las variables
creadas durante la ejecución (xstart y xnew, en el ejemplo anterior) son locales, lo que significa que no
son compartidas con el ”workspace”. Si se desea crear una función que reciba parámetros de entrada y
entregue matrices de salida, creamos el encabezado de la siguiente forma:
function [salida1, salida2, ...] = funcion(entrada1, entrada2, ...)
El comentario que aparezca en el renglón inmediato al encabezado sera desplegado al escribir help funcion.
Para el caso de Newton la función nos queda:
function [xnew] = sqroot(x,xstart)
% Compute square root by Newton’s method

% Eliminamos Initial Guess porque xstart tiene ahora un valor inicial

for i = 1:100
xnew = ( xstart + x/xstart)/2;
disp(xnew);
if abs(xnew - xstart)/xnew < eps, break, end;
xstart = xnew;
end;
Guarde este archivo y escriba los siguientes comandos estando en el directorio en el que fue salvado
el archivo sqroot.m:
>> format long
>> sqroot(19,1)
7
Un buen ejercicio es el de crear la función ”stat”descrita en el ”help”de ”function.m”. Observe que:
>> x=rand(1,10);
y luego
>> stat(x)
y
>> [m,sd] = stat(x)
producen resultados diferentes.

Los ”m-files”que vienen con Matlab traen muchos ejemplos. Para hallarlos utilice la función:
>> path
Observe también la lista de ”demos”que vienen con el programa.

9. Estructuras de Control de programación


Matlab cuenta con 5 estructuras de control:
if
switch
for
while
break

9.1. if
Este enunciado evalua una expresión lógica y ejecuta una serie de funciones cuando la expresión
es verdadera. Opcionalmente existen los enunciados elseif y else que proveen alternativas para las
funciones que se ejecutan. Un enunciado end al final del bloque debe corresponder con cada if. Todas
las funciones van delimitadas por los cuatro enunciados, no se necesitan corchetes, parentesis ni llaves.
El algoritmo que utiliza Matlab para generar la matriz mágica de orden n involucra tres diferentes casos:
cuando n es impar, cuando n no es divisible entre 4 y cuando n es divisible entre 4. Esto se describe con:
if rem(n,2) ~= 0
M = odd_magic(n)
elseif rem(n,4) ~= 0
M = single_even_magic(n)
else
M = double_even_magic(n)
end
Es importante observar el funcionamiento de los operadores relacionales cuando se trata de matrices.
Por ejemplo, si queremos comparar la igualdad entre dos variables usamos if A == B, .... Esto es
código válido de Matlab y funciona como se espera que lo haga cuando A y B son escalares. Pero si se
tratara de matrices, A == B no verifica si son iguales, verifica donde son iguales creando una matriz con
ceros y unos, mostrando la igualdad elemento por elemento.

9.2. switch y case


El enunciado switch ejecuta conjuntos de funciones basados en el valor de una variable o una ex-
presión. Los enunciados case y otherwise delimitan los grupos. únicamente el primer enunciado que
proceda es ejecutado. Siempre debe de existir un enunciado end por cada enunciado switch.
El algoritmo para la matriz mágica puede describirse de la siguiente forma:
switch (rem(n,4)==0) + (rem(n,2)==0)
case 0
M = odd_magic(n)
case 1
M = single_even_magic(n)
case 2
8
M = double_even_magic(n)
otherwise
error(’This is impossible’)
end
Al contrario del lenguaje C, el switch de Matlab no cae al siguiente case. Si el primer case es
verdadero, los demás case no son ejecutados. De esta forma los enunciados break no son requeridos.

9.3. for
Un lazo for repite una serie de funciones o enunciados un número predeterminado de veces. Un end
que corresponde a cada for es colocado al final del bloque.
for n = 3:32
r(n) = rank(magic(n));
end
r
El punto y coma del final del enunciado evita la repetición del resultado en pantalla y r afuera del lazo
despliega el resultado final. Una buena práctica es la indentación de los lazos, especialmente cuando se
encuentran dos o más lazos anidados.

9.4. while
El lazo while repite un número indeterminado de veces un grupo de funciones o enunciados dependien-
do del control de una condición lógica. Un end delimita el bloque de enunciados y tiene correspondencia
con el while. El siguiente programa ilustra el uso del while e incluye un if, else y end, que utiliza una
bisección de intervalo para encontrar el cero de un polinomio.
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
El resultado es una raı́z del polinomio x3 − 2x − 5, cuyo valor es:
x =
2.0945514154233

9.5. break
El enunciado break permite terminar la ejecución de un lazo for or while antes de que se cumplan
las condiciones. Cuando se encuentren lazos anidados, el enunciado break sale del lazo más interno.

10. Estructuras de Datos


Esta sección incluye las estructuras de datos que utiliza Matlab 5.3.1. Estas son:
Arreglos Multidimensionales
Arreglos de Celdas
Texto y Caracteres
Estructuras

9
10.1. Arreglos Multidimensionales
En Matlab, los arreglos multidimensionales son arreglos o matrices que tienen más de dos subı́ndices.
Pueden ser creados utilizando las funciones zeros, ones, rand o randn utilizando más de dos argumentos.
Por ejemplo el comando R = randn(3,4,5); crea un arreglo de 3 × 4 × 5, con un total de 60 elementos
con distribución normal.
Un arreglo tridimensional puede representar datos fı́sicos en tres dimensiones, por ejemplo, la temper-
tura en una habitación muestreada en una malla rectangular. Tambien puede representar una secuencia
de matrices, A(k) , o muestras de una matriz dependiente del tiempo, A(t). En estos casos, el elemento
(i, j) de la kesima matriz, o la tk esima matriz, se denota por A(i,j,k).
Muchas matrices mágicas pueden ser generadas intercambiando columnas. El comando p = perms(1:4)
genera las 4! = 24 permutaciones de 1 en 4. La kesima permutación es el renglón p(k,:). Entonces
A = magic(4);
M = zeros(4,4,24);
for k = 1:24
M(:,:,k) = A(:,p(k,:));
end
almacena la secuencia de 24 matrices mágicas en un arreglo tridimensinal M. Las dimensiones de M son
size(M): 4 4 24. Para poder desplegar la matriz número 22, utilizamos M(:,:,22).

10.2. Arreglos de Celdas


En Matlab, los arreglos de celdas son arreglos multidimensionales cuyos elementos son copias de otros
arreglos. Un arreglo de celdas de matrices vacias puede ser creado con la función cell. Normalmente los
arreglos de celdas son creados al agrupar una colección variada de objetos dentro de llaves { }. Estas llaves
también son utilizadas con subı́ndices para acceder al contenido de las celdas. Por ejemplo, el comando
C = {A sum(A) prod(prod(A))} produce una arreglo de celdas de 1 × 3. Estas tres celdas contienen la
matriz A, el vector que contiene la suma de sus columnas y el producto de todos sus elementos. Cuando
C es desplegado se ve asi:
C =
[4x4 double] [1x4 double] [20922789888000]
Esto se debe a que las primeras dos celdas son muy grandes para ser desplegadas en la pantalla, pero la
tercer celda contiene únicamente un número, 16!. Dos aspectos importantes para recordar. El primero,
para tener acceso al contenido de una celda, se deben utilizar subı́ndices en llaves. Por ejemplo, C{1},
entrega la matriz A y C{3} es 16!. Segundo, los arreglos de celdas contienen copias de otros arreglos,
no son apuntadores a estos arreglos. Si el valor de A es modificado, nada le sucede a C. Los arreglos
tridimensionales sirven para almacenar una secuencia de matrices de las mismas dimensiones. Un arreglo
de celdas puede ser utilizado para almacenar un arreglo de matrices de dimensiones diferentes. Por
ejemplo
M = cell(8,1);
for n = 1:8
M{n} = magic(n);
end
M
produce la secuencia de matrices mágicas de orden diferente:
M =
[ ]
[ 2x2 double]
[ 3x3 double]
[ 4x4 double]
[ 5x5 double]
[ 6x6 double]
[ 7x7 double]
[ 8x8 double]

10
10.3. Texto y Caracteres
Para escribir texto en Matlab se utilizan comillas sencillas. Por ejemplo, s = ’Hello’. El resultado no
es una matriz de tipo numérico o un arreglo como el que hasta ahora se ha usado. Se trata de una arreglo
de caracteres de 1 × 5. Internamente en Matlab, los caracters son almacenados como números, pero no
como punto flotante. Para convertir los caracteres a punto flotante se utiliza el comando a = double(s).
El resultado corresponde al código ASCII de cada caracter:
a =
72 101 108 108 111
el comando s = char(a) regresa los valores a texto. Para concatenar variables de texto se utilizan los
corchetes [ ]. El comando h = [s, ’ world’] une las dos secuencias de caracters para producir
h =
Hello world
El enunciado v = [s; ’world’] une las dos secuencias de caracters verticalmente para producir
v =
Hello
world
Es importante resaltar que para h fue necesario insertar el espacio para separar las dos palabras y que
en v ambos renglones tienen la misma longitud. Para unir arrelgos con diferente número de caracteres,
es necesario rellenar con espacios o utilizar un arreglo de celdas.

10.4. Estructuras
Las estructuras son arreglos multidimensionales de Matlab cuyos elementos pueden ser accesados por
campos de texto. Por ejemplo,
S.name = \’antonio Gonzalez’;
S.score = 53.5;
S.grade = ’5’
crea una estructura escalar con tres campos:
S =
name: \’antonio Gonzalez’
score: 53.5
grade: ’5’
Como todo lo demás en Matlab, las estructuras son arreglos, de tal forma que es posible insertar elementos
adicionales. En este caso, cada elemento del arreglo es una estructura con varios campos. Los campos
pueden ser agragados uno a la vez
S(2).name = ’Luis M. Martinez’;
S(2).score = 84.3;
S(2).grade = ’8’;
o bien, puede ser agregado todo el elemento en un sólo comando
S(3) = struct(’name’,’Bernard van der Mersch’,’score’,94.9,’grade’,9);
Ahora la estructura es lo suficientemente larga para que Matlab no pueda desplegarla completa
S =
1x3 struct array with fields:
name
score
grade
Existen varias formas para acceder a la información en el arreglo. Todas se basan en la notación conocida
como CSV o Comma Separated Value. Por ejemplo, el comando S.score es lo mismo que el comando
S(1).score, S(2).score, S(3).score. Esta última son CSV.

Referencias
[1] The MathWorks Inc. Using Matlab Version 5. The MathWorks Inc., 1999.
[2] The MathWorks Inc. Getting Started with Matlab Version 5. The MathWorks Inc., 1999.
[3] The MathWorks Inc. Image Processing Toolbox Users Guide. The MathWorks Inc., 1999.
11

S-ar putea să vă placă și