Archivos.
Guardar y
cargar.
Para
guardar todas las variables de ambiente en un archivo se utiliza la instrucción
save
las cuales
por default se almacenan un archivo llamado matlab.mat.
Cuando se
desea recuperar la información de este archivo se utiliza la instrucción
load
Se puede
especificar el nombre de un archivo para almacenar los datos
save nombre_archivo
o para
cargar
load nombre_archivo
Si solo se
desea guardar ciertas variables se después del nombre del archivo se escribe
save nombre_archivo a b c
y al
momento de cargar no será necesario especificar las variables que se guardaron.
Ejemplo 1.
En el siguiente
ejemplo se almacenan un conjunto de variables en un archivo llamado salida.
a =
[1 2 3 4]
b =
[a', a'.^2]
c=2
save salida
clear
load salida
Guardar y
cargar en formato ascii.
En algunas ocasiones resulta interesante guardar la información de nuestras variables en un formato que pueda ser visualizado por cualquier editor de texto. El formato ascii es uno de los formatos mas estándares que nos permite almacenar nuestras variables en un documento de texto.
Para
almacenar nuestras variables como tales hacemos
a =
[1 2 3 4]
b =
[a', a'.^2]
c=2
save salida.txt –ascii
Para cargar utilizamos
load salida.txt
Cuando se
trata de archivos en formato ascii al utilizar la instrucción para cargar, tendremos
el problema de que MATLAB intenta poner todos los valores en una sola variable,
por lo cual este formato no será útil para almacenar mas de una variable.
Podremos almacenar matrices, vectores y constantes, pero nunca combinaciones de
estas.
Ejemplo 2.
Hacer un
programa que resuelva el siguiente circuito eléctrico utilizando análisis
nodal. Suponga que los datos del circuito se encuentran almacenados en un
archivo llamado circuito.txt y que el formato es:
%inicio final
conductancia fuente
0 1 2.0 1.0
1 2 3.0 0.0
2 0 1.0 0.0
2 3 2.4 2.0
3 0 1.5 0.0
1 3 0.3 -0.5
Para encontrar
la matriz de conductancia la haremos por inspección, tal que:
1.- Gi,i
será la suma de la conductancias conectadas al nodo i
2.- Gi,j
es la conductancia entre el nodo i y el nodo j con signo menos y
3.- Ii
es la suma de las corrientes que entran al nodo
la
formulación del circuito quedará como:
donde
G es la matriz de conductancias nodales
v los voltajes nodales y
I las corrientes nodales.
La solución
utilizando MATLAB queda:
function [V, Ie] = nodales(archivo)
datos = load (archivo);
n = max(max(datos(:,1)),
max(datos(:,2)));
m =
length(datos(:,1));
fprintf('El numero de nodos es = %d\n', n);
fprintf('El numero de elementos es = %d\n', m);
G = zeros(n,n);
I =
zeros(n,1);
for k=1:m
ini = datos(k,1);
fin = datos(k,2);
if ((ini
~= 0) & (fin ~= 0))
G(ini, fin) = -datos(k,3);
G(fin, ini) = -datos(k,3);
end;
if (ini ~=
0)
I(datos(k,1)) =
I(datos(k,1)) + datos(k,4);
G(ini, ini) = G(ini, ini) + datos(k,3);
end;
if (fin ~=
0)
I(fin) = I(datos(k,2)) +
datos(k,4);
G(fin, fin) = G(fin, fin) + datos(k,3);
end;
end
fprintf('La matriz de conductancias es \n'); G
fprintf('El vector de fuentes de corriente es \n'); I
fprintf('Los voltajes nodales son \n'); v = G\I
for k=1:m
ini = datos(k,1);
fin = datos(k,2);
if(ini
== 0)
vini = 0;
else
vini
= v(ini);
end;
if(fin ==
0)
vfin = 0;
else
vfin = v(fin);
end;
V(k) = vini - vfin;
Ie(k) = V(k)*datos(k,3);
end