Il pacchetto di elaborazione di dati meteomarini vettoriali MATDIMA/SEADAM

Giuseppe Brusasca - ENEL/CRAM (Milano)
Goffredo Decimi - CISE (Segrate)
Giorgio Galeati - ENEL/CRIS (Mestre)


Il pacchetto software MATDIMA è stato progettato ed implementato in ambiente MATLAB per Windows al fine di semplificare e standardizzare la fase di analisi dei dati raccolti nel corso di diverse campagne oceanografiche. Il tipo di lavoro per il quale MATDIMA è stato sviluppato consiste essenzialmente nella caratterizzazione oceanografica di siti marino-costieri al fine di permettere una valutazione dei fenomeni dinamici che influiscono sul trasporto idrodinamico avvettivo e dispersivo. In questo modo è possibile condurre studi previsionali sulla dispersione degli inquinanti immessi in ambienti marino-costieri a seguito di attività antropiche.

I risultati delle attività di analisi statistica dei dati oceanografici condotte per mezzo del pacchetto MATDIMA, possono anche essere utilizzati per l’inizializzazione di codici di calcolo finalizzati alla simulazione idrodinamica in siti marino-costieri. Attraverso l’utilizzo delle procedure implementate ed una corretta interpretazione dei risultati da esse prodotti, è possibile individuare le forzanti che possono maggiormente influire sulla dinamica caratteristica del tratto di mare in esame. L’implementazione e la messa a punto di MATDIMA è stata accompagnata dalla messa a punto delle procedure; perfezionando una metodologia di applicazione ai dati derivanti da campagne oceanografiche. La doppia denominazione del pacchetto MATDIMA/SEADAM si riferisce alle due implementazioni per personal computer e per workstation.


  • Architettura Software
    L’architettura software delle diverse procedure si sviluppa essenzialmente su tre aree dati fondamentali:
    l’Area Dati dell’Ultimo File caricato (d’ora in avanti indicata con ADUF) nella quale si memorizzano i dati relativi all’ultima operazione di caricamento; l’Area dei Dati Comuni Scalari (d’ora in avanti indicata con ADCS), nella quale vengono memorizate le serie scalari dei dati di interesse per le successive elaborazioni che presuppongono l’utilizzo di più serie in input; l’Area Dati Comuni Vettoriali (d’ora in avanti indicata con ADCV), entro cui vengono immagazzinate più serie vettoriali di dati ancora per il loro successivo utilizzo come dati di input per alcune procedure. Queste tre aree dati fondamentali assumono la forma di matrici lungo le cui righe sono individuabili i diversi campioni e le cui colonne rappresentano le serie dei singoli campioni. Alle tre aree dati ora descritte, sono associate altre tre serie scalari, che rappresentano l’asse temporale cui ogni area dati si riferisce. In esse il tempo viene convenzionalmente espresso in minuti. Nella figura seguente viene rappresentato lo schema della struttura delle aree dati.

    [FIGURA]

    Figura - Schema strutture dati

    Come già si può intuire da quanto sopra detto riguardo l’architettura generale del software, il pacchetto di analisi ed elaborazione MATDIMA è in grado di trattare indifferentemente sia dati scalari che vettoriali di qualsiasi natura. Per il trattamento di serie di dati vettoriali in particolare, esse vengono assimilate a serie nel campo complesso, rendendo più agevole il loro trattamento.

    L’organizzazione dei direttori e dei files di MATDIMA è abbastanza semplice: sotto il direttorio MATDIMA, sono situati altri tre direttori: il direttorio DIMA contiene tutte le procedure atte al funzionamento del pacchetto;
    il direttorio MAT raccoglie le procedure MATLAB utilizzate dal pacchetto; il direttorio DATI contiene infine i files di dati da analizzare. Quest’ultimo direttorio non deve necessariamente contenuto nel direttorio MATDIMA, ma il funzionamento di tutto il pacchetto risulta più agevole se questo risulta il direttorio di lavoro all’avvio delle procedure di lancio del programma.


  • Le Procedure di elaborazione di serie temporali
    Le procedure presenti in MATDIMA possono essere classificate essenzialmente in alcuni tipi fondamentali: procedure di caricamento e di trasferimento dei dati, procedure di elaborazione dei dati, procedure di visualizzazione grafica dei dati e procedure di output grafico e numerico su files. La scelta e l’attivazione delle procedure viene effettuata per mezzo di un menù iniziale riportato qui di seguito.

    [FIGURA]

    Figura - Il menu principale

    Le procedure di caricamento e di trasferimento dei dati vengono utilizzate per l’interfacciamento del pacchetto con il mondo esterno: in particolare queste procedure permettono di caricare i dati da disco in due formati differenti (formato ENEL, ed ASCII) e di trasferire i dati caricati nell’ADUF e nelle aree dati comuni, ovvero nell’ADCS e nell’ADCV. Nella fase di caricamento dei dati, è necessario che l’utente definisca, oltre al nome del file da caricare anche il tipo di dati in esso registrati, ovvero se i dati sono scalari o vettoriali e se essi sono costituiti dalle due componenti cartesiane ortogonali o se sono espressi in termini di modulo e di fase, la data ed ora iniziale delle serie caricate (in formato anno, mese, giorno, ore, minuti) e l’intervallo di campionamento delle serie espresso in minuti. I files caricati da disco, ed eventualmente trasferiti nelle aree comuni scalari e vettoriali, possono contenere una o più serie scalare o vettoriale di dati per ognuno dei due formati disponibili. In questa fase di caricamento viene eseguito anche un controllo dei dati da caricare in grado di individuare la presenza di dati non numerici o contrassegnati dal codice di dato mancante. Al termine del caricamento viene mostrato un riassunto delle caratteristiche delle serie caricate e si può quindi eventualmente passare alla fase di trasferimento dei dati nell’ADCS e nell’ADCV. I dati vengono memorizzati in queste aree solo se l’intervallo di campionamento è lo stesso delle serie eventualmente già presenti in esse e se le serie già presenti e da trasferire sono relative ad intervalli temporali che presentano una sovrapposizione. Nell’ADCS e nell’ADCV vengono quindi memorizzati i dati relativi all’intervallo temporale ottenuto dall’intersezione tra tutte le serie trasferite.

    La maggior parte delle procedure di elaborazione implementate utilizza l’area dati dell’ultimo file caricato, ma alcune di esse, come ad esempio le analisi di cross-correlazione e le Empirical Orthogonal Functions in campo reale, utilizzano i dati immagazzinati nell’area comune ADCS ed altre ancora, come per esempio le Empirical Orthogonal Functions in campo complesso, quelli dell’area comune ADCV. Le procedure di output numerico su file permettono di salvare su file i risultati delle elaborazioni e/o le serie, eventualmente modificate nel corso delle elaborazioni, attualmente memorizzate nell’ADUF. In particolare il salvataggio dei dati può essere effettuato nei due formati disponibili (ENEL ed ASCII) e l’utente può scegliere se salvare tutti i dati o solo una parte di essi. Il salvataggio dei risultati delle elaborazioni viene invece effettuato con modalità e formati diversi a seconda delle procedure che hanno prodotto i risultati stessi. In entrambi i casi l’utente è chiamato a definire il nome del file di output. Per quanto riguarda l’output grafico di tutti i diagrammi presentati a monitor ed ottenuti sia mediante le procedure di analisi che quelle di semplice visualizzazione grafica, possono essere stampati.

    Le procedure di visualizzazione grafica permettono diverse modalità di rappresentazione delle serie di dati utilizzate. Mediante il plottaggio delle serie temporali è possibile rappresentare l’evoluzione di ciascuna delle serie, scalari o vettoriali, caricate nell’ADUF. L’ eventuale presenza di dati mancanti viene indicata da un asterisco. Per le serie temporali di dati vettoriali sono inoltre possibili alcune altre rappresentazioni particolarmente adatte ad evidenziare le caratteristiche delle serie vettoriali. Ad esempio è possibile costruire
    lo scatter-plot della serie vettoriale, ovvero rappresentare, in un grafico cartesiano centrato sull’origine, l’insieme dei punti le cui coordinate sono determinate dalle componenti cartesiane ortogonali dei vettori che, istante per istante, rappresentano l’evoluzione della serie temporale in esame.

    Alternativamente possono essere rappresentati contemporaneamente sia gli andamenti temporali delle due componenti cartesiane ortogonali della serie vettoriale in esame, nella parte superiore del grafico, sia lo stick-graphic della stessa serie, nella parte inferiore del grafico. In pratica la serie vettoriale viene rappresentata mediante una successione di vettori i cui punti di applicazione sono disposti lungo l’asse temporale orizzontale.

    Infine è anche possibile rappresentare i diagrammi progressivi (o odogrammi) ottenuti dalle serie temporali vettoriali di velocità. Viene cioè rappresentato, mediante la spezzata nel piano XY ottenuta congiungendo i vettori velocità misurati ai tempi successivi, l’integrale della serie temporale rappresentante il vettore velocità. Si tenga presente che quest’ultima procedura non rappresenta l’andamento lagrangiano della particella d’acqua infinitesima, lo sarebbe invece se il campo di moto fosse uniforme.

    Per ognuna delle procedure grafiche appena descritte, è possibile definire opportunamente il titolo e la didascalia dell’asse delle ordinate. Inoltre è possibile selezionare la modalità di rappresentazione dell’asse delle ascisse (in giorni, in minuti, o come numero d’ordine dei dati) e la scala dell’asse delle ordinate (automatica o manuale, digitando, in questo caso, gli estremi superiore ed inferiore della scala). E’ poi sempre possibile sovrapporre ai grafici una grigliatura di riferimento o ripresentare a video l’ultimo grafico costruito. Da ultimo la parte più consistente del pacchetto è costituita dalle diverse procedure di elaborazione ed analisi dei dati. In questo caso è possibile effettuare un’ulteriore suddivisione in procedure di pre-elaborazione e procedure di analisi vera e propria.

    Tutte le procedure di pre-elaborazione dei dati operano sull’ADUF ed i risultati di tali operazioni si sostituiscono ai dati originari nell’ADUF. Alcune di queste procedure inoltre operano sulle serie di dati solo se il loro carattere (scalare o vettoriale) è consistente con le operazioni che vengono svolte: ad esempio la procedura di rotazione del sistema di riferimento può essere applicata solo a dati vettoriali. In particolare nel corso delle pre-elaborazioni delle serie caricate, esse possono essere ruotate di un angolo definito dall’utente, possono essere interpolati i dati mancanti eventualmente presenti nelle serie scalari o vettoriali caricate nell’ADUF, dopo aver preventivamente definito il valore convenzionale che rappresenta il dato mancante o non valido.
    E’ possibile ricampionare la serie, scalare o vettoriale, digitando il nuovo valore dell’intervallo di campionamento, al fine di uniformare il campionamento di diverse serie, è possibile inoltre sommare, o sottrarre, una costante a ciascun elemento della serie, oppure moltiplicare o dividire gli elementi di una serie per una costante.
    Agli elementi della serie originaria si può sottrarre il valore medio della serie stessa, infine si possono estrarre da una serie, scalare o vettoriale, una subserie, relativa ad un intervallo di tempo contenuto in quello originario
    (è necessario, in questo caso, digitare le coordinate temporali del primo e dell’ ultimo dato di interesse).

    Per mezzo delle procedure di analisi dei dati si possono evidenziare diversi aspetti delle informazioni contenute nei dati. Tra le procedure contenute in MATDIMA ve ne sono alcune per il filtraggio dei dati, per mezzo sia di filtri a media mobile, sia di filtri di Lanczos e di Butterworth. La finalità di queste procedure è quella di eliminare dal segnale originario le componenti armoniche che non interessano ai fini degli studi che si stanno conducendo. Tutte le procedure relative al filtraggio dei dati operano sull’ADUF ed i risultati ottenuti si sostituiscono ai dati originari, essendo memorizzati ancora nell’ADUF.

    Un buon filtro passa-basso dovrebbe avere le seguenti caratteristiche: possedere un taglio netto delle componenti con frequenza superiore a quella di taglio; avere una buona risposta ai transitori, avere la minima rotazione di fase; non produrre distorsioni nelle componenti a frequenza inferiore a quella di taglio; richiedere un tempo di calcolo ridotto. Purtroppo spesso alcune di queste caratteristiche sono tra di loro in competizione, ovvero, ad esempio, un filtro con un netto taglio delle frequenze indesiderate generalmente presenta una risposta ai transitori peggiore rispetto a quella di un filtro con un taglio più graduale.

    Il più semplice tra i filtri implementati in MATDIMA, è costituito dal cosidetto filtro passa-basso a media mobile, che elabora le serie mediando i campioni contenuti all’interno di una finestra, di ampiezza definita dall’utente, che scorre lungo la serie temporale da filtrare.

    Un’altra delle procedure di filtraggio implementate in MATDIMA è quella per il filtraggio attraverso un filtro di Butterworth, uno dei più comunemente utilizzati nell’ambito dell’ingegneria elettronica. Le caratteristiche principali del filtro di Butterworth sono quelle di avere un andamento del guadagno di potenza in funzione della frequenza monotono e massimamente piatto nella zona passa-banda. Dato che il filtro di Butterworth è ricorsivo, nella serie filtrata viene introdotto uno sfasamento rispetto a quella originaria. Tuttavia applicando il filtro off-line, questo inconveniente può essere evitato filtrando due volte la serie, con il secondo filtraggio applicato alla serie ottenuta invertendo l’asse dei tempi. In questo modo si ottiene anche un raddoppio dell’ordine del filtro. In letteratura si possono trovare applicazioni di questa tecnica di filtraggio a dati di origine oceanografica.

    Nell’utilizzo del filtro di Butterworth, l’utente deve impostare la tipologia del filtro (passa-basso, passa-banda o passa-alto), la o le frequenze di taglio ed il numero di stadi del secondo ordine desiderati per il filtro. Sia il filtraggio per mezzo del filtro di Lanczos, che quello per mezzo del filtro di Butterworth, permettono di salvare nell’ADUF o i dati filtrati o i relativi residui, ovvero la differenza tra i dati originari e quelli fitrati.

    Nell’implementazione del filtro di Lanczos si è utilizzato un metodo basato sul calcolo della trasformata discreta di Fourier della serie temporale originaria; questa trasformata viene quindi troncata eliminando le armoniche con frequenza superiore a quella di taglio e successivamente, mediante l’antitrasformata di Fourier, viene ricomposta da questa la serie nel dominio del tempo. Il taglio in frequenza ottenibile da questa metodologia è estremamente preciso, ma il filtro così ottenuto risente fortemente del fenomeno di Gibbs, ovvero ha una cattiva risposta ai transitori che producono oscillazioni spurie nella serie filtrata. Per ridurre queste oscillazioni spurie, la trasformata discreta di Fourier viene pesata per mezzo di una funzione sinc.

    Un’altra delle procedure implementate in MATDIMA, permette di effettuare alcune analisi statistiche standard, comprendenti il calcolo, per ciascuna delle serie temporali caricate nell’ADUF, della media, della deviazione standard, del valore minimo e massimo, dell’indice di Skewness (valutazione della simmetria nella distribuzione dei dati della serie) e dell’indice di Kurtosis (valutazione di quanto piatta o appuntita è la distribuzione dei dati rispetto alla distribuzione normale). Nella schermata riassuntiva dei dati statistici sono riportati anche alcuni dati relativi al campionamento della serie, al numero di dati in essa contenuti ed all’eventuale presenza di dati classificati come mancanti. MATDIMA permette anche di rappresentare l’istogramma delle frequenze dei valori assunti da una serie temporale scalare tra quelle memorizzate nell’ADUF. In questo caso all’utente viene richiesto il numero di intervalli in cui suddividere l’istogramma.

    Di particolare interesse nelle applicazioni oceanografiche sono le analisi di auto-correlazione e di cross-correlazione tra differenti serie scalari o le analisi per identificare la presenza di un trend lineare in una serie scalare; tutte queste procedure sono anch’esse implementate in MATDIMA.

    Possono inoltre essere effettuate analisi spettrali di grandezze scalari: MATDIMA permette di calcolare e rappresentare graficamente lo spettro di potenza; se l’analisi è effettuata su due serie MATDIMA rappresenta oltre agli spettri delle due serie anche la funzione di coerenza e la fase del cross-spettro.

    In particolare, per l’analisi di serie vettoriali è stata implementata una procedura che calcola e rappresenta graficamente gli spettri delle componenti ortogonali Est e Nord della serie vettoriale; oltre a questi vengono calcolati gli spettri rotatori secondo la metodologia sviluppata da Gonella (1972) e ne vengono rappresentate le componenti orarie, antiorarie e totale. La stessa procedura calcola e rappresenta anche l’orientazione media dell’ellisse descritta dai vettori rotanti.

    Tra le altre procedure implementate nel pacchetto MATDIMA di particolare interesse per l’analisi delle serie correntometriche sono le procedure per l’analisi mediante le Empirical Orthogonal Function (EOF), o analisi delle componenti principali. Questo tipo di analisi cerca di riassumere la maggior parte della varianza di un insieme di serie temporali con un minor numero di serie derivate. Praticamente l’analisi mediante EOF individua una base di rappresentazione opportuna tale che le serie derivate (dette anche componenti principali) possono essere ordinate in base alla percentuale della varianza complessiva a ciascuna di esse associata. In questo modo la maggior parte della varianza delle serie originarie può essere descritta dalle prime componenti principali. Nel pacchetto MATDIMA sono state implementate due diverse procedure per il calcolo delle componenti principali: una per l’analisi di serie scalari ed una per l’analisi di serie vettoriali. La metodologia utilizzata per il calcolo delle componenti principali segue l’approccio descritto negli articoli di Kundu e Allen (1975, 1976).


  • Conclusioni
    Il pacchetto MATDIMA è stato sviluppato per l’analisi di serie temporali raccolte nel corso di campagne oceanografiche. In particolare MATDIMA permette di elaborare serie temporali scalari, quali ad esempio le serie di temperatura, pressione atmosferica o salinità, e serie vettoriali bidimensionali, quali ad esempio serie di velocità di corrente marina. Il pacchetto è stato sviluppato in ambiente MATLAB con l’utilizzo di alcune routines in pascal per le operazioni di input/output dei dati.

    Oltre alle elaborazioni/rappresentazioni consentite dalla maggior parte dei pacchetti per l’elaborazione di serie temporali quali il filtraggio (passa basso, alto o banda) dei dati, il calcolo delle funzioni di auto o cross-correlazione, la rappresentazione mediante scatter plots, stick graphics o odogrammi, MATDIMA consente di effettuare alcune elaborazioni particolarmente indicate per l’analisi di dati vettoriali bidimensionali quali ad esempio i dati raccolti nelle campagne oceanografiche; nelle quali i dati di velocità di corrente marina rilevati sono caratterizzati dall’avere le componenti orizzontali di ampiezza predominante rispetto alla componente verticale. Per dati di questa natura le procedure sviluppate si sono rivelate di estrema utilità: le analisi spettrali rotatorie condotte su serie di velocità correntometrica si sono dimostrate indispensabili per l’individuazione delle componenti inerziali, che altrimenti non sarebbero state evidenziate per mezzo della sola analisi spettrale “ordinaria”. Altrettanto utili, per l’individuazione di comportamenti comuni tra diverse serie correntometriche, sono le analisi effettuate mediante le Empirical Orthogonal Function. Il pacchetto MATDIMA consente di effettuare queste elaborazioni con buona agevolezza, all’interno di un ambiente integrato.



  •