Documente Academic
Documente Profesional
Documente Cultură
Ejemplo: Genera una matriz mgica y guardala en un archivo .mat. Una vez realizadas estas operaciones borra el
WorKspace y vuelve a recuperar la matriz anterior.
Si se teclea
>>save espacio.mat
sin determinar las variables a almacenar, en el archivo espacio.mat se guardan todas las variables del Workspace.
Los ficheros .mat son un tipo particular de archivos que slo pueden ser ledos por MATLAB. Para almacenar la matriz A en
un fichero de texto, tecleamos la instruccin
>>save alea.dat A /ascii
o
>>save alea.dat A -ascii
Ejercicios
1. Observa el fichero de texto creado. Borra el Workspace y carga el fichero alea.dat.
2. Busca ayuda sobre la instruccin diary. Utiliza la instruccin para guardar una sesin de trabajo.
CADENAS DE CARACTERES.
En MATLAB podemos asignar a una variable una secuencia de letras, por ejemplo, ``hola''. Para ello simplemente hay que
escribir el texto entre apstrofes.
>> h='hola'
h=
hola
>> h
ans= hola
El comando whos nos informa que h ha sido almacenado como un vector. Al ser un vector podemos extraer, por ejemplo,
su cuarta componente.
>> h(4)
ans = a
El comando num2str pasa una variable numrica a una cadena de carcteres.
>> a=7.895
a= 7.8950
>> s=num2str(a)
s= 7.895
Ejercicios:
1. Cunto vale s(3) en el ejemplo?
2. Consulta la ayuda de la instruccin setstr. >Que se obtiene con las expresiones setstr(65), setstr(1) y setstr(126)?
3. Comprueba como actan las funciones habituales sobre cadenas de caracteres mediante, por ejemplo, sin('quepasa') y
log('quepasa').
VECTORES Y MATRICES.
>> A=[3 1 5; 2 1 2]
>> A(1,3) % elemento en la posicin (1,3)
ans = 5
>> B=[2,-1,4;5,2,3]
>> A+B % suma de matrices
ans = 5 0 9
735
>> C=[2 3 ; -1 3; 6 -2]
>> A+C % cuidado con las dimensiones
??? Error using ==> + Matrix dimensions must agree.
>> A+C' % dimensiones correctas para sumar
ans = 5 0 11
540
>> D = [1 -1; 5 -4; 1 6]
>> 3*D
ans = 3 -3
15 -12
3 18
>> A*D % funciona el producto de matrices
ans = 13 23
9 6
>> A*B % de nuevo las dimensiones...
??? Error using ==> * Inner matrix dimensions must agree.
>> A=[1 6;-8 1];
>> B=[-2 3;-4 2];
>> A*B % producto matricial
ans = -26 15
12 -22
>> A.*B % producto elemento a elemento
ans = -2 18
32 2
>> A./B % dividimos elemento a elemento
ans = -0.5000 2.0000
2.0000 0.5000
>> A.^2
ans =
1 36
64 1
>> A^2 % al ser una matriz cuadrada es equivalente a A*A
ans =
-47 12
-16 -47
>> C=[4 1; 1 9]
>> C.^(1/2) % igual que ejecutar sqrt(C)
ans =
21
13
>> C^(1/2)
ans =
1.9899 0.2007
0.2007 2.9933
En el caso de vectores o matrices, estas funciones actan sobre cada uno de los elementos.
>> a=[1,2,3];
>> sqrt(a)
ans =
1.0000 1.4142 1.7321
>> sin(3*a)
ans =
0.1411 -0.2794 0.4121
>> log(5*a)
ans =
1.6094 2.3026 2.7081
>> A=[3 1 5; 2 1 2; 1 2 0];
>> sqrt(A) % raiz cuadrada elemento a elemento
ans =
1.7321 1.0000 2.2361
1.4142 1.0000 1.4142
1.0000 1.4142 0
>> abs([1,-2,3,-5])
ans=
1235
Ejercicios:
1. Consulta la ayuda de la instruccin diag y construye una matriz como la del ejercicio anterior usando dicha instruccin.
2. Determinar que hacen las siguientes funciones que actan sobre vectores y matrices :
Length size
mean trace
sum poly
prod expm
3. Introduce en a, a2 dos matrices de igual tamao. Comprueba el resultado de ejecutar
>> a+a2
>> a*a2
>> a.*a2
4. Ejecuta las instrucciones
>> 3/5
>> 3\5
y observa el resulta. Tiene sentido desde el punto de vista anterior?.
5. Qu hacen las instrucciones
>> a./b
>> a/b
si a y b son matrices del mismo tamao?. Observa que sucede si se ejecuta
>> 1./a
EXPRESIONES LGICAS.
MATLAB es capaz de respondernos si ciertas expresiones son verdaderas o falsas. Si la comparacin es cierta, MATLAB
nos responder con un uno y si es es falsa con un cero.
>> 3<4
ans= 1
>> 4<3
ans=0
La siguiente tabla nos muestra el formato de las comparaciones que podemos realizar con MATLAB.
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
= no igual que
Para los valores lgicos hay definidas tres operaciones fundamentales que en informtica reciben los nombres AND, OR y
NOT:
p&q Operacin AND. Si las expresiones p y q son verdaderas devuelve el valor uno y en caso contrario cero.
P|q Operacin OR. Si alguna de las afirmaciones p o q son verdad devuelve uno, en caso contrario devuelve cero.
Si comparamos dos matrices del mismo orden, MATLAB nos responde con la matriz que resulta al comparar elementos con
mismos ndices.
>> [1 2; 2 4] >= [1 2; 3 4]
ans=
1 1
0 1
Si comparamos una matriz con un nmero, el resultado es una matriz que muestra el valor lgico de la comparacin de
cada elemento de la matriz con dicho nmero.
>> [1 2; 3 4] >= 2
ans=
0 1
1 1
p Operacin NOT. Cambia el valor lgico de p.
>> p=[1 1 0 0]; q=[1 0 1 0];
>> [p&q;p|q; p]
ans=
1 0 0 0
1 1 1 0
0 0 1 1
>>3>2 | 1<0
ans= 1
Tambin existen variables lgicas que toman los valores 0 (falso) o 1 (verdadero) . Por ejemplo:
>> v =[1 2 3]
>>abs(v)>=2 % Vector lgico cuyas coordenadas valen 1 si la coordenada
% correspondiente de v es >= 2 y 0 si no lo es
ans =
011
>>vector=v(abs(v)>=2) % Vector formado por la coordenadas de v que
% verifican la desigualdad
vector =
23
>>v2=[3 2 1]
v2 =
321
>>logica=v==v2 % Asignacin de un valor lgico (el doble signo igual es el
% igual lgico)
logica =
010
>>logic2=v~=v2 % Distinto (~ es el operador de negacin)
logic2 =
101
Ejercicios:
1. Pregunta a MATLAB si es mayor que el nmero .
2. Pregunta a MATLAB qu elementos de la matriz mgica de orden 6 son mltiplos de 3. Utiliza para este ejercicio la orden
rem.
3. Compara dos cadenas de caracteres de la misma longitud, por ejemplo 'hola' y 'majo'. Explica el resultado.
4. Considera el vector x=[1 2 4 5 7 9 11]. >Qu se obtiene al escribir x(x>5)? Explica el resultado.
5. Qu elementos de la matriz magic(9) son mayores que diez y mltiplos de cinco?
6. Es lo mismo 0&1|1 que 0&(1|1)?
La instruccin any aplicada a un vector devuelve el valor uno si algn elemento del vector vale uno y cero en caso
contrario. La instruccin all aplicada a un vector devuelve el valor uno cuando todos los elementos del vector valen uno y
devuelve cero en caso contrario.
>> any([1 0 0 1])
ans=1
Nota: Esta ltima instruccin equivale a 1|0|0|1.
Si se aplica el comando any o all a una matriz, MATLAB devuelve un vector fila que resulta de efectuar a cada uno de los
vectores columnas la operacin any o all, respectivamente.
El comando exist responde si una variable est definida en el Workspace. Notemos que el argumento de exist debe ser
una cadena con el nombre de la variable.
>> a=2; exist('a')
ans= 1
Ejercicios:
1. Pregunta a MATLAB si la matriz mgica de orden 20 tiene algn elemento que valga cero.
2. Define las matrices h y a mediante las instrucciones h=['hola' 33]; a=[3 'adios' 3];. Pregunta si se trata de una cadena o
de una variable numrica. Observa el resultado que se muestra por pantalla al teclear h, a.
3. Es la matriz eye(0,7) una matriz vaca?
4. Que realizan los siguientes comandos:
isempty isnan
isstr finite
Se puede trabajar con polinomios: basta tener en cuenta que un polinomio no es ms que un vector. El orden de los
coeficientes es de mayor a menor grado, por ejemplo:
>>p=[1 0 2 0 3] % Polinomio x^4+2*x^2+3
p=
10203
>>q=[2 1 0] % Polinomio 2*x^2+x
q=
210
MATLAB tiene funciones especficas para polinomios como:
>>polyval(p,-1) % Evaluacin del polinomio x^4+2x^2+3 en x=-1
ans =
6
>>pro=conv(p,q) % Producto de los polinomios p y q
pro =
2142630
>>deconv(pro,p) % Cociente entre pro y p; obviamente el resultado es q
ans =
210
>>roots(pro) % Races del polinomio pro
ans =
0
0.6050+1.1688i
0.6050-1.1688i
-0.6050+1.1688i
-0.6050-1.1688i
-0.5000
>>poly([i -i 1/2 pi]) % Polinomio mnico que tiene por races a los
% nmeros i, -i, 0.5 y pi
ans =
1.0000 -3.6416 2.5708 -3.6416 1.5708
Respuestas:
Solucin:
>>H=[1:10;zeros(9,10)]
>>H(2:10)=2:10
Solucin: Hay varias soluciones. Una de ellas es
>>H=[zeros(1,10);eye(9,10)]
Solucin:
>>H=diag(ones(9,1),-1)
length Tamao. Esta instruccin tambin sirve para matrices y, en ese caso, da el mximo entre el nmero de filas y de
columnas.
max Valor mximo.
min Valor mnimo.
mean Valor medio.
sum Suma de los elementos.
prod Producto de los elementos.
Funciones definidas para matrices. Algunas son:
size Tamao de la matriz.
trace Traza de la matriz.
det Deteterminante de la matriz.
poly Coeficientes del polinomio caracterstico de la matriz.
expm Exponencial matricial.