23. Matlab – Práca s adresármi a súbormi

09. Apríl, 2010, Autor článku: Blaho Michal, MATLAB/Comsol
Ročník 3, číslo 4 This page as PDF Pridať príspevok

Práci s najbežnejším typom súborov, ktoré využíva Matlab (M-súbory) sme sa venovali už v inej časti nášho seriálu. Dnes si popíšeme funkcie pre prácu so súbormi a adresármi na disku. Na záver tejto časti si ukážeme s akými typmi súborov dokáže Matlab pracovať a spravíme si úvod do exportu a importu dát do/zo súborov.

Práca s adresármi

S adresárom, ale aj súbormi môžeme manipulovať pomocou okna Matlabu – Current Directory. Niekedy však pri písaní našich skriptov potrebujeme na manipuláciu s adresármi a súbormi funkcie. Výstupom z týchto funkcií sú textové reťazce prípadne štruktúry, ktoré obsahujú požadované informácie. Príkaz pwd a cd vracia reťazec s absolútnou cestou ku aktuálnemu pracovnému adresáru. Zmenu adresára vykonáme príkazom cd, kde zadáme meno cieľového adresára.

>>pwd
ans = /Users/miseno/Documents/MATLAB
>>cd software
>>cd
ans = /Users/miseno/Documents/MATLAB/software

Obsah adresára zistíme príkazmi ls, alebo dir. Príkaz ls vráti pod Unix-ovými systémami znakový vektor mien súborov oddelených tabulátormi a medzerami. Pod Windowsom príkaz ls vracia maticu znakov. Každý riadok je meno súboru doplnené medzerami tak, aby sa zhodovalo s najdlhším menom (znakové matice musia mať rovnaký počet znakov v stĺpci). Príkaz dir pracuje podobne ako príkaz ls s rozdielom, že výsledok je vrátený ako štruktúra s nasledovnými údajmi:

  • name – nemo súboru (pole znakov)
  • date – dátum zmeny (pole znakov)
  • bytes – počet bytov vyhradených pre súbor (double)
  • isdir – 1 ak je položka name súbor, 0 ak adresár (logical)
  • datenum – dátum zmeny ako Matlabové dátumové čislo (double)

>>adr = dir
>>adr(3)
ans =
name: 'data.dat'
date: '21-Feb-2010 23:23:35'
bytes: 19
isdir: 0
datenum: 7.3419e+05

Ďalšími príkazmi môžeme pracovať s konkrétnym adresárom. Príkaz exist kontroluje či existuje daný adresár. Ak áno, vráti ako návratovú hodnotu číslo 7, ak nie vráti 0. Zvyšné čísla sú vyhradené pre premenné a typy súborov. Zistíte ich pomocou príkazu help exist, alebo ich nájdete v príručke. Príkazom mkdir vytvoríme nový adresár. Ak použijeme jeden atribút vytvoríme adresár vzhľadom na aktuálny adresár. Adresár môžeme vytvoriť aj v inom adresári. V tom prípade bude prvý argument cesta ku adresáru, kde chceme vytvoriť adresár s menom v druhom argumente funkcie. Adresár zmažeme príkazom rmdir. Tu už neplatia pravidlá ako pri vytvorení adresára. Ak chceme zmazať adresár aj s jeho obsahom je nutné pridať ako ďalší argument funkcie písmeno s ako reťazec.

>>exist('posterus')
ans = 0
>>mkdir('posterus')
% do adresara som mimo Matlabu vlozil subor test.m
>>dir
.    ..    test.m
>>rmdir('posterus','s')

Posledná sada príkazov sa v Matlabe nevyužíva až tak často, preto si o nich povieme len v stručnosti. Príkazom fileattrib dokážeme nastaviť a získať atribúty adresárov a súborov. Príkaz what vráti štruktúru zadaného adresára. Jednotlivé súbory rozdelí podľa prípony do polí typu cell. Posledný príkaz filebrowser, otvorí prípadne dá do popredia okno Current Directory. Všetky doposiaľ spomenuté príkazy sú zhrnuté v nasledovnej tabuľke.

Tab. 1 Funkcie pre prácu s adresárom

Príkaz Popis
cd zmena aktuálneho adresára
dir výpis obsahu adresára
exist zisťuje existenciu adresára alebo súboru
fileattrib nastavenie a získanie atribútov
filebrowser otvorenie Current Directory
ls výpis obsahu adresára
mkdir vytvorenie adresára
pwd cesta k aktuálnemu adresáru
rmdir zmazanie adresára
what zoznam súborov adresára podľa prípony

Práca so súbormi

Príkaz edit sme si už spomínali v časti o M-súboroch. Otvorí existujúci M-súbor na editáciu prípadne otvorí prázdny editor na tvorbu nového súboru. Súbor sa dá skopírovať zo zdrojovej adresy na cieľovú pomocou príkazu copyfile. Aj keď názov naznačuje, že ide o kopírovanie súborov, možno pomocou tohto príkazu kopírovať aj adresáre. Presunúť súbor (ale aj adresár) môžeme pomocou príkazu movefile. Funkcia s jedným argumentom prekopíruje zdroj do aktuálneho adresára, pridaním ďalšieho argumentu špecifikujeme cieľový adresár.

>>mkdir('posterus')
>>copyfile('test1.m','./posterus')
>>movefile('test2.m','./posterus')
>>dir('./posterus')
.    ..    test1.m    test2.m
>>movefile('./posterus/test2.m','.')
>>dir('./posterus')
.    ..    test1.m

Na odstránenie súboru slúži príkaz delete. Cesta k súboru je absolútna alebo relatívna. Môže obsahovať náhradné znaky (wildcards ako je napr. *). Príkaz recycle vám zistí, či sa odstránené súbory zmažú úplne alebo skončia v „odpadovom koši“. Vráti off ak ich Matlab zmaže úplne a on ak ich ukladá do systémového koša. Požadovanú hodnotu mu nastavíte aj sami ako textový reťazec (on/off). Užitočným príkazom môže byť aj príkaz fileparts. Príkaz vráti informácie o súbore ako textové reťazce konkrétne cestu k súboru, meno súboru, príponu súboru a jeho verziu. Funkcia fullfile zloží cestu k súboru z adresárov a mena súboru, ktoré sú zadané ako textové reťazce.

>>recycle
ans = off
>>recycle on
>>[pathstr,name,ext,versn]=fileparts('./posterus/test1.m')
pathstr = ./posterus
name = test1
ext = .m
versn = ''
>>delete('./posterus/test*.*')
%kos je zapnuty mal by obsahovat zmazane subory

Posledné príkazy si znovu prebehneme len stručne. Príkaz clipboard dokáže čítať a zapisovať dáta zo/do systémového clipboardu. Pomocou príkazu which dokážete nájsť súbory na disku, vráti k nim celú cestu. Príkazom open dokážete otvoriť súbor. Typy súborov, ktoré takto dokážete otvoriť nájdete v manuáli k tomuto príkazu. Môžete vytvoriť aj vlastnú funkciu openxxx, pomocou ktorej môžete spracovať súbor s vlastnou súborovou príponou. To však neplatí pre prípony, ktoré podporuje príkaz open. Po príklade súborové príkazy zhrnieme.

>>text='posterus';
>>clipboard('copy', text)
%ak date vo Windowse CTRL+C v Command line
%nakopiruje sa tam text, prikazom to mozeme urobit takto
>>clipboard('paste')
ans = posterus
>>which test1.m
/Users/miseno/Documents/MATLAB/test1.m
%chceme otvorit subor s priponou .ch
>>open myfigure.cht
%Matlab nepodporuje tuto priponu snazi sa volat funkciu,
%ktoru vyvolame manualne prikazom
>>opencht('myfigure.cht')
%funkciu musime naprogramovat my sami!!!

Tab. 2 Funkcie pre prácu so súbormi

Príkaz Popis
clipboard práca so systémovým clipboardom
copyfile kopírovanie súborov aj adresárov
delete zmazanie súboru
edit tvorba nového alebo editácia existujúceho M-súboru
fileparts informácie o súbore
fullfile skladanie cesty k súboru
movefile presunutie súboru alebo adresára
open otvorenie súboru
recycle nastavenie spôsobu mazania súborov
which hľadanie súboru

Matlab dokáže so súbormi nielen manipulovať, ale dokáže aj pracovať s ich obsahom. Ako už iste budete tušiť ich čítanie do Workspace sa označuje import dát a zápis z Workspace do súboru export dát. Aký mechanizmus na export a import dát použijete (názov príkazu) závislý od typu súboru. Matlab má vstavané funkcie na čítanie a zápis týchto typov súborov:

  • binárne dátové súbory Matlabu
  • textové súbory
  • grafické súbory
  • audio a audio/video súbory
  • tabuľkové súbory
  • dáta zo systémového Clipboardu
  • informácie z Internetu

Nasledujúca tabuľka popisuje formát súborov, typ prípony a funkcie na export a import. Prácu s mini si už necháme na ďalšie časti.

Tab. 3 Podporované formáty súborov

Formát súboru Obsah súboru Prípona Funkcie
Formátovanie Matlabu Uložený Workspace Matlabu .mat load
save
Text Text nezaleží textscan
Text textread
Ohraničený text dlmread
dlmwrite
Čiarkou oddelené čísla .cvs cvsread
cvswrite
Rozšírený značkovací jazyk XML – formátovaný text .xml xmlread
xmlwrite
Audio zvuk NeXT/SUN .au auread
auwrite
Microsoft WAVE .wav wavread
wavwrite
Video Audio/Video .avi aviread
aviwrite
.avi
.mpg
.mpeg
.wmv
.asf
.asx
.mov
.mp4
.m4v
.3gp
.3g2
.dv
mmreader
Vedecké dáta Common data format .cdf cdfread
cdfwrite
Flexible Image Transport System .fits fitsread
HDF4 formát .hdf hdf
HDF5 formát .h5 hdf5
Tabuľkové dáta Microsoft Excel .xls xlsread
xlswrite
Lotus 123 .wk1 wk1read
wk1write
Grafické súbory TIFF obrázok .tif imread
imwrite
PNG obrázok .png
HDF obrázok .hdf
BMP obrázok .bmp
JPEG obrázok .jpeg
GIF obrázok .gif
PCX obrázok .pcx
XWD obrázok .xwd
Kurzorový obrázok .cur imread
Ikonkový obrázok .ico imread

Napísať príspevok