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
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 |