2
« en: Martes 17 de Febrero de 2009, 22:28 »
Buenas chica!
Esta mañana estuve a punto de responderte pero andaba liada en el trabajo. Veo que intentas hacer lo mismo que yo estoy haciendo. Quieres trabajar con archivos .txt, eso he entendido. Preguntaste si para poner archivos en un txt con una cabecera se puede hacer con la función 'fprintf', de echo es la forma adecuada cuando la parte de cabecera la introduces de forma constante y la parte de .txt es de forma matricial con caracteres.
En Matlab cuando se trabaja con archivos .txt que se desea tratar se debe tener cuidado porque al leerlos generaras lo que se conocen como 'cell arrays'. Este formato es incompatible con la función 'fprintf' por lo que si quieres volver a pegar ese contenido en otro fichero no podras hacerlos a menos que modifiques su formato pasando de 'cell array a 'character array?. Ese paso se puede realizar mediante la función '' que los pega unos a otro. Te voy a poner ejemplos de las dos situaciones, cuando generas un .txt con datos matriciale sy cabecera, y un .txt con 'character arrays'.
PRIMER CASO
matriz=[1 2 3;4 5 6;7 8 9];
B1='prueba';%Esta parte si la ponemos variable podemos generar archivos con nombres variables
Lista=strcat(B1,'.txt');%Marca el nombre del archivo que vamos a crear
D1_1=strcat('c:Archivos de programaMATLAB704work',Lista);%Marca donde se va a guardar el .txt
fid1=fopen(D1_1,'w')% Se abre un archivo txt que ya hemos denominado con anterioridad con al función 'w' de escritura
fprintf(fid1,' %s%[^n]','La matriz que estamos guardando');%Se pueden poner tantos como se deseen, lo que hay entre los dos es el fromato
fprintf(fid1, '%f%f%f n', matriz);
************************************************************
Este programa te guardaria un archivo como .txt con una cabecera 'La matriz que estamos guardando' y de contenido la matriz.
SEGUNDO CASO
EN el caso de tener en lugar de matriz un .txt con datos en columnas o separados por comas se tiene que leer primero el contenido. Esto se ahce mediante la función 'textscan', de donde se generan cell arrays del conido. Este se transforma en 'character array' mediante la función 'char' y por último se pega con la cabecera y el 'character array'.
entrada=input('Dame el archivo .txt de entrada: ','s');%entrada del archivo
fid1=fopen(entrada);%Se abre el archivo
datos=textscan(fid1, '%s%[^n]');%Se lee el archivo, se elige el formato que se desea.
A{1,1}=char(datos{1});%Se define las dos 'character array'
A{1,2}=char(datos{2});
space={' '};
B1=strcat(A{1,1},space,A{1,2});%Se crea una 'character cell' de todos los contenidos
cabecera=char('La cabecera que predice');
B2=strvcat(cabecera,B1);%pegado en vertical de la cabecera y lo del archivo .txt
dlmwrite('prueba.txt', B1);%La salida del archivo nuevo será 'prueba.txt'
***************************************************************************************************
Espero que esto te se ade ayuda si tienes alguna duda más sólo tienes que preguntármelo.
Mucha suerte,
Mercedes