Az m-funkciók programozása
10. Adatfájlok olvasása és írása.
Saját adataink során következetesen megfontoljuk a numerikus vektorok és mátrixok, szöveges karakterláncok, struktúrák és cellatestek tartalmának írását.
Kezdjük numerikus vektorokkal és mátrixokkal. Az úgynevezett bináris (nem szöveges) fájlokkal dolgozunk, melyeket először a MATLAB rendszer fopen funkciójával kell megnyitni:
ahol a fájl nevét egy teljes elérési útvonal előzi meg (különben a fájlnak az aktuális MATLAB könyvtárban kell lennie). Ennek a funkciónak a második paramétere - a fájl megnyitásának ún. Zászlója - a fájl további munkájának módjáról szól:
'wb' - írj csak (az előző tartalom elveszett)
A példák második betűje a fájlok bináris jellegéről szól. Egy másik lehetőség olyan zászló, amely egyszerre lehetővé teszi a fájlok olvasását és írását ('r +'), de itt nem használjuk.
A fopen függvény megadja a nyitott fájl numerikus azonosítóját, amelyet a fájl olvasási és írási funkcióinak paramétereként kell használni. Ha a fájl megnyitása nem sikerült (ez lehetséges mind a fájl hiányában, mind a lemezen található helytelenül megadott elérési út miatt), akkor a fopen függvény értéke -1 lesz.
Mindig ellenőrizze a visszatérési funkciót fopen:
hiba ("A fájl nem nyitott")
Miután a fájl már nem szükséges, zárva kell zárni:
A bináris fájlokra vonatkozó információk olvasása és írása a fread és a fwrite függvények által történik. A fájlok információinak írásához a fwrite függvény a következő argumentumokkal rendelkezik:
ahol fid a fopen által visszaadott fájlazonosító; A vektor vagy mátrix, amelynek elemeit fájlba kell írni; A "precíziós" karakterlánc a valós számokhoz rendelt memória mennyiségét jelenti. Ez 8 bájt vagy 64 bit, ezért a stringnek "float64" -nek kell lennie.
A következő kódfájl létrehozza az a oszlopvektort és a 2x3 méretű B mátrixot, amelyet ezután "dataTest.gqw" nevű fájlba írnak (itt a fájlnévkiterjesztést önkényesen úgy választják meg, hogy az ne legyen azonos az ismert kiterjesztésekkel):
Most, amikor szüksége van rá, elolvashatja a fájlból eltárolt vektor és mátrix értékeit. Amit az alábbi kódrészlet illusztrál:
Az általunk megadott kódrészletek közül az utolsó olyan gyakorlati hibákkal szembesül, amelyek egyértelműen kiemelik a fájlokkal (különösen a binárisokkal) kapcsolatos problémákat. Először is, nem alkalmazzuk a fájl megnyitásának érvényesítését, amelyet fent említettünk, csak a rövidség kedvéért.
Követni a helyzet a fájl mutatót, és a munka vele a funkció feof (jelzésére használt fájl vége), fseek (beállítja a fájl pointer), ftell (jelzi, ha az aktuális érték a fájl pointer), frewind (beállítja a fájl mutatót egy fájlba nachaldo). Mindezek a funkciók átlátható jelentéssel bírnak, ezért nem fogjuk részletesen megvizsgálni. Mindig megtalálhatók a MATLAB súgórendszerben.
Most beszéljünk egy kicsit a vonalak rögzítéséről. Eddig bináris fájlokkal dolgoztunk. Más típusú fájlok szöveges fájlok. Ezek kifejezetten a felvétel nagy része a szöveg, mert ezek a fájlok szervesen együtt járó „megértés” a szétválás a szöveg a sorban (az a tény, hogy sem a könyv értelemben vett), és ez a bináris fájlok „nem értem”. Az utóbbi csak byte streamrel működik.
A fentiek ellenére a MATLAB szövegváltozók bináris fájlokra írhatók. Fontos megjegyezni, hogy minden karakter két bájtot igényel, ezért az 'int16' jelzőt kell használni.
Íme egy példa erre a munkára:
Az eredmény strTest.gqw fájl, amely bináris formátumban tartalmazza a két karakterláncváltozó tartalmát. Ezek olvashatók a fread funkcióval:
Nincsenek speciális funkciók a MATLAB-cellák struktúráinak és tömbjeinek írására és olvasására fájlokban. Ezért elemzésre van szükségük a belső szerkezetük későbbi olvasása és helyreállítása érdekében.