Mathematica: Tutorial 6

Import i eksport danych

Możliwości Mathematici pod tym względem są spore, choć bardzo specyficzne. Rozpatrzmy najprostszy przypadek. Poniżej dane. Jest to tablica o dwu kolumnach

In[1]:= data={{0.055,90},{0.091,97},{0.138,107},{0.167,124},{0.182,142},{0.211,150},{0.232,172},{0.248,189},{0.284,209},{0.351,253}};
In[2]:= data//MatrixForm
Out[2]//MatrixForm= (0.055	90
0.091	97
0.138	107
0.167	124
0.182	142
0.211	150
0.232	172
0.248	189
0.284	209
0.351	253
)

Polecenie zapisu na dysku wygląda tak jak poniżej. Plik zostanie zapisany w „bieżącej kartotece". Pierwszy parametr to nazwa, drugi [LongDash] obiekt, który eksportujemy, trzeci [LongDash] format danych. Powinien on być “Data” gdy chcemy wyeksportować dane numeryczne w postaci ASCII (czyli czytelnej). Rozszerzenie powinno być dat dla tego typu.

In[3]:= Export["a.dat",data,"Data"];

Polecenie FilePrint czyta zawartość pliku i wyprowadza na ekran.

In[4]:= FilePrint["a.dat"]
During evaluation of In[4]:=
0.055	90
0.091	97
0.138	107
0.167	124
0.182	142
0.211	150
0.232	172
0.248	189
0.284	209
0.351	253

Tak na prawdę obiektem może być (prawie) dowolne wyrażenie.

In[5]:= Export["b.dat",Transpose[data],"Data"];
In[6]:= FilePrint["b.dat"]
During evaluation of In[6]:=
0.055	0.091	0.138	0.167	0.182	0.211	0.232	0.248	0.284	0.351
90	97	107	124	142	150	172	189	209	253

Funkcja Import czyta plik, starając się (na podstawie rozszerzenia) zidentyfikować typ danych. więc wszystko powinno być OK.

In[7]:= data1=Import["b.dat"]
Out[7]= {{0.055,0.091,0.138,0.167,0.182,0.211,0.232,0.248,0.284,0.351},{90,97,107,124,142,150,172,189,209,253}}
In[8]:= data1//MatrixForm
Out[8]//MatrixForm= (0.055	0.091	0.138	0.167	0.182	0.211	0.232	0.248	0.284	0.351
90	97	107	124	142	150	172	189	209	253
)

Funkcja DeleteFile pozwala „posprzątać" czyli skasować zbędne pliki.

In[9]:= DeleteFile[{"a.dat","b.dat"}]
In[10]:= FilePrint["a.dat"]
During evaluation of In[10]:= General::noopen: Cannot open a.dat.
Out[10]= FilePrint[a.dat]

Jak widać pliku już nie ma. Polecenie Directory (bez parametrów) mówi nam jaka jest aktualnie „bieżąca kartoteka".

In[11]:= Directory[]
Out[11]= /home/myszka

Inne typy plików: grafika

Innymi rodzajami danych, którymi potrafi zajmować się Mathematica to obrazy:

In[12]:= Export["test.png",Integrate[1/(x^4-1),x]]
Out[12]= test.png

Polecenie jest dosyć niecodzienne: każę wykonać operację symbolicznego całkowania, a wynik (w postaci wyrażenia nie wykresu) zapisać do pliku graficznego. Sprawdźmy:

In[13]:= Import["test.png"]
Out[13]= 

Obrazek utworzony z wykonania operacji symbolicznego całkowania
Obrazek utworzony z wykonania operacji symbolicznego całkowania

Łatwo się przekonać zaznaczając wynik, że jest to obrazek. Możemy zaimportować atrybuty obrazka ("Elements").

In[14]:= Import["test.png","Elements"]
Out[14]= {AnimatedImage,Animation,AnimationRepetitions,BitDepth,BlendOperation,CameraTopOrientation,Channels,ColorMap,ColorProfileData,ColorSpace,Comments,Data,DateTime,DisplayDurations,DisposalOperation,Exif,FlashUsed,GeoPosition,GPSDateTime,Graphics,GraphicsList,Image,ImageCount,ImageList,IPTC,MakerNote,MetaInformation,RasterSize,RawData,RawExif,RawIPTC,RawXMP,RedEyeCorrection,Summary,SummarySlideView,Thumbnail,ThumbnailList,XMP}

jego rozmiary (“ImageSize”):

In[15]:= Import["test.png","ImageSize"]
Out[15]= {367,39}

Teraz dobierzemy się do danych. Wiemy, że są one tablicą typu RGBColorArray. Rozmiary obrazka to 34 wiersze po 327 pikseli każdy. A każdy piksel to trzy liczby: natężenie bazowych składowych.

In[16]:= obrazek=Import["test.png","Data"];
In[17]:= Dimensions[obrazek]
Out[17]= {39,367,3}
In[18]:= obrazek[[1,1]]
Out[18]= {255,255,255}
Poprzedni
Następny