Sunteți pe pagina 1din 5

PRACTICA N2

ing. Olha Sharhorodska


ALMACENAMIENTO DE VARIABLES EN FICHEROS
Matlab ofrece la posibilidad de grabar las variables que deseemos en un fichero. Por ejemplo
>> a=4+i;% numero complejo
>> b1=cos(2);
>> b2=sin(2);
>> save datos a b1 b2
graba en el fichero datos.mat las variables indicadas. Para recuperar, basta ejecutar
>> load datos
Los resultados que se obtienen al ejecutar una determinada instruccin o programa son perdidos al acabar la sesin de
MATLAB. Si queremos almacenarlos en un archivo, para despus utilizarlos en otras sesiones necesitaremos usar la
instruccin save. Por ejemplo, al teclear
>>A=rand(3,3)
obtenemos una matriz aleatoria y podemos almacenarla en el fichero alea.mat mediante la instruccin
>>save alea.mat A
Para recuperar dicha matriz en otra sesin basta teclear
>>load alea.mat
y tendremos de nuevo la matriz A definida en el Workspace.

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.

isempty Responde si una matriz es vaca.


isstr Responde si una variable es una cadena.
isnan Responde si una variable surge al calcular una indeterminacin.
finite Responde si una varible es un nmero finito.

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