Gestione dati esterni in Octave

Kazimir Majorinc

Kazimir Majorinc

Un altro post perso(nale) su Octave. Una continuazione di questo.

A volte, anzi spesso, capita di dover elaborare dati provenienti da altre applicazioni o da chissà dove. Si può fare.

Ecco un esempio elementare, nella directory corrente ci sono i due files carica.m e elab.m che definiscono le due funzioni che intenderemo usare.

carica.m:

function res = carica()
    global dati
    dati = [1, 2, 3, 4, 5];
endfunction

elab.m:

function res = elab()
    global dati
    res = (dati(1) + dati(2)) * (dati(3) + dati(4)) / dati(5); 
endfunction

g0

OK, notare che dati è in memoria ma non presente nell’ambiente; occorre l’invocazione a global

g1

Spesso i dati arrivano da un foglio di calcolo, come questi:

g2

In questo caso è sufficiente salvarli come CSV

1,2,3
4,5,6
7,8,9

e l’intervento per trasformare il file risultante in funzione risulta minimo.

Non è sempre così immediato: consideriamo numeri non interi, con la virgola come siamo abituati noi (nel foglio di calcolo, non come programmatori):

g3

In questo caso il CSV può, a seconda delle impostazioni, essere così

"1,1","2,2","3,3"
"4,4",5,6

in cui essendo il separatore di campo la virgola (convenzione usuale per gli americani) i numeri reali vengono trasformati in stringhe. C’è un quirk aggiuntivo per Octave: gli interi verranno trasformati in float, in genere non dovrebbe essere un problema.

Non è però possibile mischiare numeri e stringhe, se del caso suddividere i files di dati:

g4

La soluzione alternativa, che io preferisco, è di reimpostare il separatore di campo a punto-virgola. È tra l’altro, a quanto mi risulta, una condizione abituale. In questo caso il CSV diventa

1,1;2,2;3,3
4,4;5;6

Per renderli usabili con Octave sono necessarie un po’ di modifiche in entrambi i casi. Con Linux sono semplicissime, basta uno script; altrimenti un programmino di poche righe (con Python, probabilmente).

:mrgreen:

Annunci
Post a comment or leave a trackback: Trackback URL.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: