MATLAB: Crear carpetas, crear y guardar archivos (.txt), figuras (.fig), hojas de excel (.xls) y el or!space Algu"as
ocasio"es puede
resultar
#til,
el
guardar y
orga"i$ar los
datos
auto%&tica%e"te. 'ara esto puede ser "ecesario el crear y ad%i"istrar carpetas y archiv archivos os de difere difere"te "tess tipos tipos (figur (figuras, as, .txt, .txt, excel, excel, etc) etc) por %edio %edio de co%a"d co%a"dos os e" MatLa. Al fi"al de este post se prete"de ote"er u" script ue cree tres carpetas (experiencia1, experiencia2, experiencia3) experiencia3) ue se e"cue"tre" alojadas e" u"a carpeta ge"eral de RESULTADOS de RESULTADOS , ade%&s e" cada carpeta de experie"cias, se guardar&: •
*" archivo de texto (readme.txt) ( readme.txt) co" co" i"for%aci+" de la si%ulaci+",
•
*"a figura (si".fig),
•
Toda la i"for%aci+" o variales del ordspace ( wordspace.mat ), ),
•
*"a variale i"depe"die"te, caso - se reuiera todas las variales (si".%at) y
•
*" archivo de excel (hoja.xls).
Los resultados descritos se puede" apreciar e" la fi!ra la fi!ra 1. 1.
Figura 1. "!rrent 1. "!rrent #o$der
%Obtener el Path de la carpeta Actual [stat,struc] = fleattrib; PathCurrent = struc.Name; or n=!"
%crear las rutas #Path$ para carpetas archi&os 'olderName = [(e)periencia( num*str#n$]; Path'older = [PathCurrent (+-/01A2O+( 'olderName]; Namee)cel = [Path'older (+ho3a.)ls(]; % operaciones del pro4rama ) = 5pi!.!pi; = sin#n6)$; % 4rafcar sin = f4ure; set#sin,(Name(,['olderName (7sin(],(Number1itle(,(o8($; plot#),$; 4rid on; title#(sin#)$($ le4end#( = sin#)$($; )label#()($; label#(sin#)$($; % crear las carpetas para 4uardar los resultados m9dir#[PathCurrent (+-/01A2O(], 'olderName$; %:uardar datos en archi&o -C-0 titulo = <()( (n6sin#)$(; datos = &ertcat#),$(; )ls>rite#Namee)cel, titulo, , (A($; )ls>rite#Namee)cel, datos, , (A*($; end
:0OA?O! Path older! carpeta de la ruta Path Current! Actual camino+ Actual direcci@n
Codi4o completo! %% Crear carpetas, crear 4uardar archi&os .t)t, .f4, .)ls >or9space % 6666666666666666666666666666666666666666666666666666666666666666666666666 % Autor! 'rancisco A. ando&al N. % Creati&e Commons 0icense! CC B5NC5N2 ". % asando&alnD4mail.com % "+E+** %6666666666666666666666666666666666666666666666666666666666666666666666666 clc clear all tic %para mostrar tiempo de simulaci@n %Obtener el Path de la carpeta Actual [stat,struc] = fleattrib; PathCurrent = struc.Name; or n=!" %crear las rutas #Path$ para carpetas archi&os 'olderName = [(e)periencia( num*str#n$]; Path'older = [PathCurrent (+-/01A2O+( 'olderName]; Name'ile = [Path'older (+readme.t)t(]; Namee)cel = [Path'older (+ho3a.)ls(]; % operaciones del pro4rama ) = 5pi!.!pi; = sin#n6)$; % 4rafcar sin = f4ure; set#sin,(Name(,['olderName (7sin(],(Number1itle(,(o8($; plot#),$; 4rid on; title#(sin#)$($ le4end#( = sin#)$($; )label#()($; label#(sin#)$($; % crear las carpetas para 4uardar los resultados m9dir#[PathCurrent (+-/01A2O(], 'olderName$; % crear un archi&o .t)t con datos fle?2 = open#Name'ile,(>($; print #fle?2,(Fn%Gs %*sFnFn(,()(,(n6sin#)$($;
print #fle?2,(%G.* %*.HFn(,),$; print #fle?2, (FnFn1iempo imulaci@n acumulado! % se4undosFn(,toc$; close#fle?2$; % 4uardar f4ura en la carpeta sa&eas#sin, [Path'older (+sin.f4(], (f4($; % 4uardar >or9space en la carpeta sa&e#[Path'older (+>or9space.mat(]$; sa&e#[Path'older (+sin.mat(], (($; %:uardar datos en archi&o -C-0 titulo = <()( (n6sin#)$(; datos = &ertcat#),$(; )ls>rite#Namee)cel, titulo, , (A($; )ls>rite#Namee)cel, datos, , (A*($; end
-)plicaci@n! 0a manera Iue se ha utiliJado en este caso es el traba3ar con un path absoluto, para ello, en las lKneas " L se obtiene el Path de la Current Folder a tra&Ms de fleattrib! " [stat,struc] = fleattrib; L ParhCurrent = struc.Name;
2onde struc.Name alo3a un dato similar a C!F/sersF))))))F2ocumentsFA10A , o el Path en el Iue te encuentres traba3ando. -n realidad con fleattrib#(name($ se puede obtener modifcar los atributos paraname, donde name es un path absoluto o relati&o de una carpeta o archi&o. -n las lKneas H se crea el nombre path de las carpetas # experiencia $ de
orma
dinmica
en
relaci@n
a
la
&ariable n del for .
0a
unci@n num*str#n$ con&ierte nQmero a strin4. ecordar Iue las &ariables creadas #FolderName PathFolder $ son de tipo char . -n la lKnea * * se crean los nombres para los archi&os .txt .xls. A continuaci@n se declarar unas &ariables x y , Iue para el caso no tienen importancia, su unci@n es la de ser&ir de e3emplo de datos para almacenar 4rafcar.
-n las lKneas *R a la "", se realiJa una 4rfca, i4ualmente como e3emplo, prestar atenci@n a la lKnea *H donde se asi4na la f4ura a crear en la &ariable fsin al4o importante para poder 4uardarla lue4o, a continuaci@n en la lKnea * se setea el nombre de la f4ura. -n la lKnea "R creamos las carpetas con el comando comQn para O, mkdir . "R m9dir#[PathCurrent (+-/01A2O(], 'olderName$;
-n las lKneas L a la LL, se crea el archi&o .t)t. Primero se crea un archi&o con el nombre NameFile se le asi4nan permisos de escritura # ‘w’ $. 0ue4o se escribe los datos, en la lKnea L los tKtulos de la tabla, \n son saltos de lKnea %6s se refere a datos G caracteres strin4 #para maor idea del asunto puedes re&isar la auda del comando print en atlab$. -n la lKnea L* se a4re4an los datos. 'inalmente se debe cerrar el archi&o con close . L print #fle?2,(Fn%Gs %*sFnFn(,()(,(n6sin#)$($; L* print #fle?2,(%G.* %*.HFn(,),$;
Figura 2. readme.txt
Para 4uardar una f4ura, se utiliJa el comando sa&eas, como en la lKnea LR, a4re4ando un path, el nombre ormato. Para 4uardar las &ariables del workspace se emplea el comando sa&e, se puede 4uardar todas las &ariables como en el e3emplo o especifcar una o &arias de ellas como el la lKnea si4uiente donde se 4uarda la &ariable y . 'inalmente en las lKneas EL a la ER se 4uarda inormaci@n en un archi&o de e)cel, para lo cual se emplea el comando )ls>rite , se introduce un tKtulo en la fla #celdas A de e)cel$ los datos a partir de la celda A* *.
Figura 3. %o&a de Exce$