Anteprima
Vedrai una selezione di 5 pagine su 20
Manuale di Mathematica 06 Pag. 1 Manuale di Mathematica 06 Pag. 2
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 06 Pag. 6
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 06 Pag. 11
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 06 Pag. 16
1 su 20
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi

<div>

Scarica il

</div>

Estratto del documento

Daniele Lupo Appunti di Mathematica

Importazione ed

esportazione

ü Introduzione

Abbiamo visto le potenzialità di Mathematica per quanto riguarda il calcolo simbolico e numerico.

Tuttavia, nonostante abbiamo imparato a fare un sacco di cose, ci siamo limitati a lavorare sempre

all'interno del programma. Molte volte, invece (poche, a dire il vero, se siamo studenti), capita di

dover effettuare delle elaborazioni su dei dati acquisiti esternamente al programma, oppure vogliamo

esportare i dati in modo che possano essere utilizzati da altri programmi. Lo scambio dei dati fra

programmi è un concetto importante da imparare, specie se bisogna lavorare molto al calcolatore per

elaborare e sviluppare le opportune ricerche. Per esempio, si usa un programma in C ideato da

un'altra persona, per effettuare una simulazione, salvando i risultati in un file, e dopo si vogliono

importare questi dati per vedere se effettivamente sono come ce li aspetiamo. oppure, magari,

potremmo usare i dati derivati da un oscilloscopio campionatore per effettuare analisi che

l'oscilloscopio non è in grado di eseguire, per esempio se non è in grado di effettuare la trasformata

di Fourier dei campioni (anche se probabilmente riesce a farlo se è anche solo sufficiente come

strumento, ma parlo solo di esempi). Le applicazioni sono tutte importanti, e Mathematica le gestisce

praticamente tutte, da entrambi i sensi. Vediamo, quindi, cosa possiamo fare per elaborare con

Mathematica i nostri dati.

ü Importazione

Mathematica è in grado di importare una quantità di file di diverso formato: file di testo, immagini e

quant'altro. Esiste una variabile di sistema che elenca tutti i possibili formati di file che si possono

importare:

$ImportFormats

8AIFF, APS, AU, Bit, BMP, Byte, Character16, Character8, Complex128,

Complex256, Complex64, CSV, DICOM, DIF, Dump, DXF, EPSTIFF,

Expression, ExpressionML, FITS, GIF, HarwellBoeing, HDF, HDF5,

Integer128, Integer16, Integer32, Integer64, Integer8, JPEG, Lines,

List, MAT, MathML, MGF, MPS, MTX, NB, NotebookML, PBM, PCX, PGM,

PNG, PNM, PPM, Real128, Real32, Real64, SDTS, SND, STL, String,

SymbolicXML, Table, TerminatedString, Text, TIFF, TSV, UnicodeText,

UnsignedInteger128, UnsignedInteger16, UnsignedInteger32,

UnsignedInteger64, UnsignedInteger8, WAV, Words, XBitmap, XLS, XML<

180

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Fra i molti che non conosco neanch'io, potete notare i formati più conosciuti, come BMP, JPEG,

WAV, Text, e, importante soprattutto per la compatibilità con i programmi più moderni, XML.

Questa lista ovviamente dipende dalla versione del programma posseduta (la mia è la 5.1), ma la

maggior parte dei file più comuni rimane invariata.

Il comando usato per importare dei dati è il seguente:

importa una tavola di dati da un file

Import["file", "Table"]

La seconda opzione dice in particolar modo al programma in quale modo sono organizzati i file nel

file. Per i file di testo le opzioni più comuni sono:

¤ CSV: valori tabulari separati da una virgola.

¤ Lines: linee di testo.

¤ List: linee che sono formate più valori.

¤ Table: matrice bidimensionale di numeri oppure stringhe.

¤ Text: strnga di caratteri ordinari.

¤ TSV: tabella di testo con valori separati da tabulazione.

¤ UnicodeText: stringhe di caratteri Unicode di 16 bit.

¤ Words: parole separate da spazi o da ritorni a capo.

¤ XLS: formato di foglio di calcolo di Excel.

Supponiamo di voler importare una lista di dati:

Come potete vedere, l'importazione di un'immagine è cosa alquanto semplice e rapida

=

dati Import@"D:\\Documenti\\dati.txt", "List"D

812312, 124314, 1312, 3123, 123, 123, 1, 41, 4, 35, 4, 543,

635, 67, 5735, 3, 524, 52, 6, 264, 2, 62, 46, 53, 4, 23, 542<

Prima di continuare, notate come sono definiti i percorsi di file in Mathematica: infatti, usa una

notazione propria, che è indipendente dalla macchina e dal sistema operativo che si sta usando. Per

poter importare un file, è necessario il percorso assoluto, a meno che non si trovi nella cartella del

programma, cosa che fra l'altro vi sconsiglio di fare. Meglio tenere sempre separati programmi e

dati, come chiunque in vita sua ha provato almeno una volta a fare un backup sa bene. Per

semplificarvi la vita, potete usare la voce di menù del programma Input->Get File Path, che vi scrive

181

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

direttamente il percorso quando scegliete il file da una finestra di Esplora Risorse. Detto questo,

possiamo andare avanti...

Come possiamo vedere, abbiamo appena importato il nostro file, con i valori contenuti in esso

raggruppati nella lista: →

ListPlot@dati, PlotJoined TrueD

3000

2500

2000

1500

1000

500 5 10 15 20 25

Graphics

Avendo la lista, adesso possiamo trattarla esattamente come abbiamo imparato fino ad adesso

possiamo elaborarla, estrarre valori, farne la trasformata di Fourier... Tutto quello che ci serve,

insomma. Possiamo anche importare formati grafici:

=

cane Import@"D:\\Documenti\\Immagini\\dog02.jpg"D

Graphics

E possiamo visualizzarlo esattamente come se fosse una primitiva grafica di tipo Raster:

182

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Show@caneD

Graphics

Tuttavia, sebbene sia abbastanza semplice importare le immagini, estrarne i dati per le elaborazioni

richede un passaggio in più.

=

evanescence Import@

"D:\\Documenti\\Immagini\\EvanescenceFallenGroupWallpaper.jpg"D;

Show@evanescenceD

Graphics 183

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Possiamo vedere come sia stata importata l'immagine nel suo complesso. Tuttavia, possiamo notare

che, nel caso di immagini, importiamo oggetti grafici, che possono essere usati solo come tali.

Invece, può capitare che un'immagine ci serva come matrice, nel senso che ogni pixel contiene valori

numerici che ci interessano per elaborazioni numeriche. In questo caso, ci serve la lista che

Mathematica usa per rappresentare l'immagine raster.

Shallow@InputForm@evanescenceDD

>>D, >>D, >>D, >>DD

Graphics@Raster@<< 4 Rule@<< 2 Rule@<< 2 Rule@<< 2

Il comando Shallow permette di rappresentare in forma abbreviata il contenuto di un comando o di

una variabile. Vedremo in una delle sezioni successive più in dettaglio questo comando. Per ora ci

basti sapere che serve per visualizzare brevemente il contenuto di qualsiasi cosa esista in

Mathematica.

Possiamo vedere che la variabile evanescence che rappresenta il formato grafico è formato dal

comando Raster, più tre regole. sappiamo che il comando Raster richiede una lista di dati da

visualizzare, per cui la lista che ci interessa si trova proprio lì dentro. Possiamo estrarre direttamente

la lista dal formato grafico, nel seguente modo:

=

dati evanescence@@1, 1DD;

Short@dati, 4D

8 <

1

Con il comando Short vediamo una rappresentazione riassunta del contenuto di qualcosa. L'ho

dovuta usare perchè i dati di un'immagine sono numerosi, ed avrebbero riempito decine di pagine. Si

può vedere che, per un'immagine, i dati sono rappresentati da una matrice, i cui elementi sono a loro

volta delle liste di tre numeri, rappresentanti rispettivamente i valori Rosso, Verde e Blu del pixel.

Una volta ottenuta la lista, possiamo elaborarla come più ci piace.

Naturalmente, possiamo effettuare tutte le operazioni di elaborazione delle immagini che vogliamo.

Soltanto che non è che conosca bene cose come il filtro di Kalman oppure algoritmi di

convoluzione... accontentatevi di questo esempio stupido ed anzi, se sapete suggerirmi qualche

algoritmo di elaborazione dei segnali particolarmente simpatico, sarò bel lieto di usarlo...

In questo caso, andiamo ad usare una matrice di convoluzione per trasformare la nostra immagine da

matrice di tre valori, a matrice di singoli valori, applicando un certo effetto, quindi trasformata in

scala di grigi. Andiamo a definire il nostro tensore:

184

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8

=

88−1, 81, 81,

kernel −1, −1,

881, 8−2, 81,

0<, 0, 1<, 1<<,

−5, −1<,

881, 81, 8−1,

1, 1<, 1, 1<<,

−1<<

<; 1, 1<, 1, 1<, 0,

Una volta creata la nostra matrice di convouzione, andiamo ad applicarla alla nostra immagine, o

meglio, alla lista di valori ad essa correlata (dato che la sola importazione comporta la creazione non

della lista, ma di un

Dettagli
Publisher
20 pagine