Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P1 Matlab
P1 Matlab
Introducción a Matlab
Una vez arrancado MATLAB, aparece una pantalla como la de la Figura 1. En la parte
derecha tenemos la Command Window. Ésta es la ventana en la que se ejecutan
interactivamente las instrucciones de MATLAB y en donde se muestran los resultados
correspondientes, si es el caso (en la figura se puede ver la matriz M después de haber
sido creada). En la Command Window vemos
>>
eso significa que MATLAB está esperando que le introduzcamos un comando
En la parte inferior izquierda tenemos el Command History. El Command History
ofrece acceso a las sentencias que se han ejecutado anteriormente en la Command
Window. Estas sentencias están también accesibles por medio de las teclas ↑ y ↓. Las
sentencias ejecutadas anteriormente se pueden volver a ejecutar mediante un doble clic
o por medio del menú contextual que se abre al clicar sobre ellas con el botón derecho.
También se pueden copiar y volcar sobre la línea de comandos, pero se ha de copiar
toda la línea, sin que se admita la copia de un fragmento de la sentencia.
En la parte superior izquierda tenemos una zona que alterna entre Workspace y Current
Directory. El Workspace contiene información sobre todas las variables que se hayan
definido en esta sesión y permite ver y modificar las matrices con las que se esté
trabajando (haciendo doble clic sobre ellas, Figura 2).
Figura 2.- Editor de matrices Figura 3.- Vista del Current Directory
El Current Directory muestra los ficheros del directorio actual (Figura 3) y nos permite
navegar por los directorios del ordenador de forma análoga a la del Explorador de
Windows (modificando así el directorio actual). El concepto de directorio actual es muy
importante en MATLAB. Los programas de MATLAB se encuentran en ficheros con la
extensión *.m. Estos ficheros se ejecutan tecleando su nombre en la línea de comandos
(sin la extensión), seguido de los argumentos entre paréntesis, si se trata de funciones.
No todos los ficheros *.m que se encuentren en el disco duro son accesibles sin más.
Para que un fichero *.m se pueda ejecutar es necesario que se cumpla una de las dos
condiciones siguientes:
1. Que esté en el directorio actual. MATLAB mantiene en todo momento un
único directorio con esta condición. Este directorio es el primer sitio en el que
MATLAB busca cuando desde la línea de comandos se le pide que ejecute un
fichero.
2. Que esté en uno de los directorios indicados en el Path de MATLAB. El Path
es una lista ordenada de directorios en los que el programa busca los ficheros o
las funciones que ha de ejecutar. Muchos de los directorios del Path son propios
de MATLAB, pero los usuarios también pueden añadir sus propios directorios,
normalmente al principio o al final de la lista. Los ficheros *.m mostrados en la
ventana Current Directory se pueden abrir con el Editor/Debugger mediante un
doble clic (Figura 4).
ans =
2
MATLAB ha resuelto la operación que le hemos indicado y ha almacenado en la
variable ans (answer) el resultado de la misma. Siempre que no se indica explícitamente
la variable a la que se quiere asignar el resultado de una operación, MATLAB asigna,
de forma implícita, el resultado de la operación a la variable ans. Así, resulta más
recomendable escribir este otro comando:
>> x=1+1
x =
2
el resultado de la operación se almacena en la variable x. Es importante indicar que
MATLAB distingue entre mayúsculas y minúsculas (case-sensitive). Si tras el comando
anterior escribimos un ‘;’ entonces el resultado de la operación no se muestra en la
ventana de comandos:
>> x=1+1;
y =
ans =
Cuando queremos eliminar alguna variable del Workspace debemos utilizar el comando
clear en alguna de sus múltiples formas.
>> clear y
borra la variable y. Si no le damos el nombre de ninguna variable borra todas las
variables.
4 Vectores y matrices
Veamos cómo podemos crear una matriz:
>> A=[1 2 3
4 5 6
7 8 9]
A =
1 2 3
4 5 6
7 8 9
El comando anterior ha creado una matriz 3x3. Podríamos haber creado la misma matriz
con cualquiera de los dos siguientes comandos:
>> A=[1 2 3; 4 5 6; 7 8 9];
>> A=[1,2,3; 4,5,6; 7,8,9];
Así, podemos utilizar de manera indistinta el espacio en blanco o la coma para separar
columnas y el salto de línea o el punto y coma para separar filas.
M =
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
En MATLAB tenemos los siguientes operadores matriciales:
+ 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
Existen varias funciones para crear matrices: zeros, ones, rand, magic, etc.
>> m = ones(2,4)
m =
1 1 1 1
1 1 1 1
f =
2
c =
4
Esta función devuelve el número de filas y de columnas de la matriz
>> length(m)
ans =
4
length devuelve el mayor valor de filas o columnas de la matriz. Es útil cuando se
trabaja con vectores fila o vectores columna. En este caso devuelve la dimensión del
vector.
v =
1 2 3 4 5
>> v = 1:2:5
v =
1 3 5
La sintaxis es “valor inicial : incremento : valor límite”. Se puede omitir el incremento y
en ese caso se entiende que el incremento es 1. El incremento puede, por supuesto, ser
negativo.
m =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> m(1,:)=[]
m =
>> m(:,2)=[]
m =
0.2311 0.0185
0.6068 0.8214
1 1
1 0
>> a~=b
ans =
0 0
0 1
El operador ~= es el equivalente a != en C. En este caso lo hace elemento a elemento. Si
queremos saber si dos matrices son iguales tenemos que utilizar isequal:
>> isequal(a,b)
ans =
0
Tenemos funciones como any, all y find que chequean si las componentes de una matriz
cumplen una determinada condición:
>> a=magic(3)
a =
8 1 6
3 5 7
4 9 2
>> any(a>7)
ans =
1 1 0
>> all(a>2)
ans =
1 0 0
>> find(a>4)
ans =
1
5
6
7
8
any chequea por columnas si alguno de los elementos de la columna cumple una
determinada condición (en el ejemplo que sean mayores que 7). all chequea por
columnas que todos los elementos de la columna cumplan la condición. find devuelve
los índices de la componente de la matriz que cumplen la condición. Los elementos de
la matriz se numeran de arriba abajo por columnas.
5 Programación en MATLAB
MATLAB considera como comentario todo lo que hay desde el carácter ‘%’ hasta el
final de línea.
Veamos los esquemas que admite MATLAB.
La sentencia if:
if condicion1
bloque1
elseif condicion2
bloque2
else
bloque3
end
La sentencia switch
switch expresión
case exp1,
bloque1
case exp2,
bloque2
otherwise,
bloque3
end
Cuando casa con una de la expresiones ejecuta su bloque y finaliza el switch.
La sentencia for:
for i=1:n for i=vector
Bloque Bloque
end end
En vector están almacenados los valores que tomará la variable i.
La sentencia while:
while condición
Bloque
end
s =
5 5
5 5
r =
-1 -1
-1 -1
Hay otras funciones como textread que permiten cargar datos con otros formatos.
Para escribir datos a fichero se tienen las funciones fopen, fclose y fprintf. También
existe fscanf que podemos utilizar para leer un fichero.
>> [f,t]=fopen('salida','w')
f =
3
t =
''
>> fprintf(f,'la matriz es de dimensión %dx%d\n',size(a))
ans =
30
>> fclose(f);
Fopen retorna el identificador de fichero y un texto en caso de error. Fprintf retorna el
número de caracteres escrito. Después de cerrar el fichero, si comprobamos su
contenido veremos que tiene:
la matriz es de dimensión 3x3
Si queremos que la salida vaya a la ventana de comandos sin utilizar fichero podemos
utilizar fprintf sin indicar el identificador de fichero:
>> fprintf('la matriz es de dimensión %dx%d\n',size(a))
la matriz es de dimensión 3x3
Otras funciones de entrada salida útiles son input y disp. Suelen utilizarse en scripts o
funciones para interactuar con el usuario. Así, podemos solicitar que se introduzca un
valor para una variable a través de la ventana de comandos utilizando la instrucción
input:
>> x=input('dame el valor de la x = ')
dame el valor de la x = 13
x =
13
La función disp permite visualizar el contenido de una variable sin que aparezca el
nombre de la variable:
>> a=zeros(3);
>> disp(a)
0 0 0
0 0 0
0 0 0
7 Gráficos
MATLAB de varias funciones para crear gráficos 2-D y 3-D. La función plot es la más
básica de todas ellas. Veamos un ejemplo:
>> x=0:pi/10:2*pi;
>> y=sin(x);
>> plot(x,y)