Operacje na plikach z danymi Odczytywanie I zapisywanie plików w formatach MatLab I ascii



Pobieranie 19.11 Kb.
Data02.05.2016
Rozmiar19.11 Kb.

Operacje na plikach z danymi

Odczytywanie i zapisywanie plików w formatach MatLab i ASCII.


Format MatLab’a — format binarny, plik może zawierać dowolną liczbę zmiennych różnych typów (pliki typu MAT, MAT-files).

Format ASCII — plik tekstowy w postaci tabeli liczb. Plik musi zawierać w każdym wierszu tę samą liczbę danych!


Komendy zapisu:


save — Zapisuje do pliku ‘matlab.mat’ w bieżącej aktywnej kartotece wszystkie zmienne z obszaru roboczego — zapis w formacie binarnym (MatLaba).

Modyfikacje komendy zapisu:


save nazwa_pliku — Zapisuje wszystkie zmienne z obszaru roboczego do pliku ‘nazwa_pliku.mat’ w bieżącej aktywnej kartotece. W przypadku, gdy chcemy zapisać w innej niż aktywna kartotece, należy podać całą ścieżkę dostępu.

save nazwa_pliku zmienna1 zmienna2 ... — Zapisuje podane zmienne z obszaru roboczego do pliku ‘nazwa_pliku.mat’ w bieżącej aktywnej kartotece. W przypadku, gdy chcemy, aby plik miał inne rozszerzenie, należy je podać w nazwie.

save — Może być użyte w postaci funkcji z parametrami podanymi w postaci łańcuchów znakowych oddzielonych przecinkami: nazwą pliku i zmiennymi, np.: save(‘nazwa_pliku’,’zmienna1’,’zmienna2’).

Opcje zapisu:


Składnia: save nazwa_pliku -opcja — Opcje zmieniaja sposób zapisu danych do pliku.

Opcja Działanie


-append W przypadku istnienia wyszczególnionego pliku MAT, dołącza do jego końca.

-ascii 8-cyfrowy format ASCII

-ascii -double 16-cyfrowy format ASCII

-ascii -tabs dane w formacie ASCII rozdzielane tabulatorami



Opcje można mieszać ze sobą!

Komendy odczytu:


load — Odczytuje z pliku ‘matlab.mat’ w bieżącej aktywnej kartotece lub w kolejnych zadeklarowanych ścieżkami dostępu kartotekach, wszystkie zmienne i dodaje je do obszaru roboczego — oczekuje pliku w formacie binarnym (MatLaba).

Modyfikacje odczytu:


load nazwa_pliku — Wczytuje zmienne z pliku o nazwie ‘nazwa_pliku’ lub ‘nazwa_pliku.mat’ (jeśli w nazwie brak rozszerzenia), traktując ten plik jako typu MAT. W przypadku rozszerzenia innego niż *.mat plik traktowany jest jako plik ASCII.

load nazwa_pliku zmienna1 zmienna2 ... — Odczytuje podane zmienne z pliku w formacie MAT. W nazwach zmiennych można użyć znaku specjalnego’*’.

load -ascii nazwa_pliku lub load -mat nazwa_pliku — Wymusza odczytywanie pliku w podanym formacie, niezależnie od rozszerzenia pliku.
Użycie –mat daje błąd, gdy plik nie jest formatu MAT.
Użycie –ascii daje błąd, gdy plik nie jest tekstem numerycznym.
Użycie load -ascii nazwa_pliku powoduje powstanie zmiennej o nazwie nazwa_pliku bez rozszerzenia, będącej tablicą o wymiarach odpowiadających liczbie wierszy i kolumn w pliku ASCII. Pliki ASCII mogą zawierać komentarze poprzedzone znakiem %.

S = load(...)Wczytuje dane do zmiennej S. Jeśli plik jest typu MAT, S jest strukturą zawierającą elementy odpowiadające zmiennym zapisanym w pliku. Jeśli plik jest typu ASCII, S jest tablicą liczb podwójnej precyzji.

Przykłady:


save ‘dat070326.bak’ zz –ascii –tabs — zapisuje do pliku ASCII dat070326.bak zmienną zz w postaci tablicy separowanej tabulatorami.

save dat x y z — zapisuje do pliku MAT dat.mat zmienne x y z.

save(‘N:\DANE\dat.bak’,’x’,’y’,’z’) — zapisuje do pliku MAT dat.bak w katalogu N:\DANE\ zmienne x y z.

load v.dat — odczytuje dane z pliku ASCII v.dat i umieszcza je w zmiennej v.

v1=load(‘v.dat’) — to samo, ale umieszczone w zmiennej v1.

Inne standardowe formaty plików z danymi

Dane separowane przecinkiem (Comma Separated Values — CSV):


csvread — odczyt z pliku w takim formacie.

Składnia:

M = csvread('nazwa_pliku') — czyta dane separowane przecinkiem z pliku nazwa_pliku do zmiennej M.

M = csvread('nazwa_pliku',w,k) — czyta dane zaczynając od wiersza w i kolumny k. (Numeracja zaczyna się od 0!).

M = csvread('nazwa_pliku',zakres) — czyta dane w podanym zakresie: [w_górny k_górna w_dolny k_dolna].

csvwrite — zapis do pliku o takim formacie.

Składnia:

csvwrite('nazwa_pliku',M) — zapisuje zmienną M w postaci danych separowanych przecinkiem do pliku nazwa_pliku.

csvwrite('nazwa_pliku',M,w,k) — zapisuje zmienną M do pliku nazwa_pliku poczynając od w wiersza i k kolumny tej zmiennej.

Dane separowane dowolnym separatorem:


dlmread — odczyt z pliku z danymi separowanymi znakiem.

Składnia:

M = dlmread('nazwa_pliku',’separator’) — czyta dane separowane podanym separatorem z pliku nazwa_pliku do zmiennej M.

M = dlmread('nazwa_pliku',’separator’,w,k) — czyta dane zaczynając od wiersza w i kolumny k.

M = dlmread('nazwa_pliku',’separator’,zakres) — czyta dane w podanym zakresie: [w_górny k_górna w_dolny k_dolna].

dlmwrite — zapis do pliku z danymi separowanymi znakiem.

Pliki tekstowe ogólnego formatu:


textread — ta funkcja pozwala czytać dane różnego formatu z dowolnego pliku tekstowego! — i to nas najbardziej interesuje!!!

Składnia:

textread('nazwa_pliku','formaty',l_w,'headerlines',l_h,) — czyta l_w wierszy danych z pliku nazwa_pliku, których formaty są wyspecyfikowane w łańcuchu ‘formaty’ z pominięciem l_h wierszy początkowych.

Formaty:

%d%f%s%c — kolejno: l. całkowita, l. zmiennoprzecinkowa, łańcuch znakowy, znak (także spacja). Jak widać, wypisujemy kolejne formaty bez separatora. Jest jeszcze kilka innych formatów – tutaj podane najważniejsze.

Jeśli chcemy przy wczytywaniu danych pominąć jakiś typ danych, to używamy znaku ‘*’, np.: %*s pomija daną typu łańcucha znakowego.

Możemy także określić rozmiar danej, np.: %3d lub %10.5f.

Skoroszyt (zeszyt) MS Excel’a:


xlsread

Składnia:

xlsread('nazwa_pliku',’nazwa_arkusza’) — czyta dane z pliku *.xls o nazwie nazwa_pliku z arkusza nazwa_arkusza.

xlsread('nazwa_pliku',’nazwa_arkusza’,’zakres’) — zakres podajemy w formacie Excel’a, np.: C3:D7.
Istnieją jeszcze inne standardowe formaty, które potrafi czytać MatLab — do doczytania!

Operacje na „niskim poziomie”

Uwagi ogólne


Operacje na „niskim poziomie”, bazują na operacjach na plikach w języku C. Z plikami komunikujemy się za pomocą ich wskaźników (identyfikatorów).

Jednocześnie możemy użyć 512 wskaźników.

Aby móc pracować na pliku, najpierw należy go otworzyć za pomocą funkcji fopen z zaznaczeniem celu otwarcia (zapis, odczyt, dopisanie danych, itd.).

Z plikiem kontaktujemy się za pomocą jego identyfikatora, który jest mu nadawany w trakcie otwarcia.

Po zakończeniu pracy z plikiem, należy go zamknąć poleceniem fclose.

Składnia otwarcia i zamknięcia pliku:


fid = fopen(‘nazwa_pliku’,’cel_otwarcia’) — Otwiera plik nadając mu identyfikator, przechowywany przez zmienną fid.

Cel otwarcia (trzy najważniejsze):



r’ – do odczytu, ‘w’ – do zapisu (niszczy plik o tej nazwie, jeśli taki istnieje), ‘a’ – do zapisu (jeśli plik o podanej nazwie istnieje, to dopisuje do niego dane).

Uwaga: w przypadku danych tekstowych używamy w zamian ‘rt’, ‘wt’, ‘at’.

fclose(fid) — Zamyka plik, który miał nadany identyfikator fid i niszczy wskaźnik fid.

fclose(‘all’) — Zamyka wszystkie otwarte pliki.

Operacje na „niskim poziomie” — zapis i odczyt

Odczyt i zapis plików binarnych:


fread(fid,count,precision,skip,machineformat) — Odczyt. fid — wskaźnik pliku, precision — precyzja odczytu (rozmiar danych, np.: ’int8’, ‘int16’, ‘int32’, ‘float32’, ‘float64’, ‘double’), skip — przesunięcie wskaźnika po odczycie kolejnej danej o podaną liczbę bajtów, machineformat — format zapisu zmiennoprzecinkowego, jeśli nie podany, to przyjmuje się lokalny ‘native’.

fwrite(fid, A, precision, skip, machineformat) — Zapis. Zapis zmiennej A następuje kolejno kolumnami.

Odczyt i zapis plików tekstowych:


fscanf(fid, format, size) — Odczyt kolumnami (pierwsza kolumna, druga, itd.). fid — wskaźnik pliku, format — format odczytu (jak w plikach tekstowych), size[m,n] podaje liczbę m wierszy i n kolumn, które mają być odczytane (wartość n może być inf). Pojedyncze N podaje liczbę danych do odczytu.

fprintf(fid, format, A, ...) — Zapis zmiennej A następuje kolejno kolumnami.


©absta.pl 2016
wyślij wiadomość

    Strona główna