Vai al contenuto

File da Excel a Matlab


Ilaria90

Messaggi raccomandati

Ciao a tutti.

Ho una quantità di dati impressionate su excel (circa 52000 righe per 66 colonne) e vorrei poter aprire questa matrice gigante su matlab. Il problema è che i decimali sono separati con la virgola e matlab li vuole con il punto. C'è uno script che posso inserire su matlab che mi converta direttamente tutte le virgole in punti (dato che ho anche altre cartelle di dati simili)? oppure dev per forza convertirle su Excel? 

Link al commento
Condividi su altri siti

Puoi usare la funzione 'find&replace', gli dici di cercare le virgole e cambiare col i punti e poi scegli replace all. Puoi farti uno script che legga le virgole e le trasformi in punti ma devi scorrere tutta la matrice ed inizia a diventare lentina la cosa in termini di tempo di calcolo.

 

Oppure in Ecxel puoi selezionare tutte le celle (prima casellina in alto a sinistra senza lettere né numeri) e formattare con i punti al posto delle virgole.

 

Io ti consiglio di farlo da Matlab così non modifichi il file originale per ogni evenienza.

Link al commento
Condividi su altri siti

In effetti, qua dice di usare i punti:

http://www.unibas.it/utenti/dinardo/exctomat.pdf

 

Non conosco bene Matlab, ma credo che ci siano delle specifiche funzioni d'importazione.

Il rischio che corri è che ti vengano tolti i decimali. A quel punto moltiplica o dividi tutta la matrice...

 

Oppure, devi agire dal text editor, trasformando le virgole in punti.

Se trasformi in csv da Excel hai però un problema di disambiguazione, perché ci sono virgole per i campi e virgole per i decimali.

Sostituisci allora ',' con ',,'

Poi sostituisci ',' con '.'

Infine, sostrituisci '..' con ','

 

Non so se a quel punto la matrice è in qualche modo digeribile da MatLab...

Link al commento
Condividi su altri siti

si ok, ma come si fa? come posso creare uno script che mi legga questa quantità di dati da excel e me la salvi in matlab in modo che io ci possa poi lavorare sopra? e successivamente come posso inizializzare una funzione che mi converta le virgole in punti? si usa la csv read? se si, in che modo?

Link al commento
Condividi su altri siti

Per aprire il file in MATLAB, puoi fare così. In pratica ti salvi il file Excel come un file di Testo e poi lo apri da MATLAB con i vari comandi.

 

Per quanto riguarda il cambio dei punti con la virgola, se non hai provato a farlo direttamente su Excel, dove credo che si possa impostare il formato delle celle in modo che il separatore sia il punto invece della virgola, allora puoi are un piccolissimo programma in MATLAB e dirgli di cambiarti le "," con i "." tramite un banale for loop. Oppure, dato che hai il Mac e c'è la libreria Python sul Mac, potresti accedere al Terminale e attivare Python e scrivere un banale for loop in Python, nel caso conoscessi Python.

Il Mac è come un televisore, quando ti serve lo accendi, lo usi, te lo godi e, quando ti sei stancato, lo spegni.

Un PC Windows è come se ti fossi preso il cane: gli devi togliere le pulci, lavarlo, pettinarlo e, per ricompensa, se per una volta ti dimentichi di portarlo in bagno, te la farà in casa.

[cit.]

Link al commento
Condividi su altri siti

Le funzioni di conversione sono facili, ma possono portarti in casa potenziali pasticci.

Ti ho proposto un approccio più semplice e diretto. Forse non ho ben inquadrato il problema.

Hai un foglio di calcolo con molti numeri decimali. Giusti. Excel te li presenta con la virgola per separare i decimali, ed è coerente con il paese Italia, qui da noi si usa la virgola. Se nelle Preferenze di Sistema > Internazionale > Formati (questo sul mio OSX 10.4, sul tuo vai a cercare "Formati"), imposti il paese USA, vedrai che lo stesso foglio Excel te lo presenterà con i punti per separare i decimali. Senza pasticciare. Credo che Matlab non tenga conto di queste impostazioni paese, e pretenda sempre il punto. Ma appunto da Excel si puo' facilmente presentare il foglio con i punti.

Ci hai provato?

Link al commento
Condividi su altri siti

Altrimenti puoi anche fare così:

 

selezioni tutta la matrice piena di numeri in Excel, fai click destro > Formato, selezioni la voce Testo e poi clicchi su OK. Ora dovresti avere i numeri sulla sinistra delle celle a indicare che sono in formato Testo. A questo punto riselezioni l'intera matrice e vai su Modifica > Sostituisci... Qui, ti basta inserire cosa cercare e cosa sostituire. In questo modo hai fatto. Tutte l etue virgole passeranno ad essere dei punti (Ovviamente l'unica virgola che c'era all'inizio era quella per indicare le cifre decimali).

 

Fatto questo puoi salvare il tutto secondo la procedura che ti ho detto prima.

Il Mac è come un televisore, quando ti serve lo accendi, lo usi, te lo godi e, quando ti sei stancato, lo spegni.

Un PC Windows è come se ti fossi preso il cane: gli devi togliere le pulci, lavarlo, pettinarlo e, per ricompensa, se per una volta ti dimentichi di portarlo in bagno, te la farà in casa.

[cit.]

Link al commento
Condividi su altri siti

no ok, da inglese ho stati uniti o stati uniti pc...ora provo entrambi e vedo se risolvo

Ma scusa: il formato lo vedi immediatamente, nella casella "numeri" che c'è più sotto, no?

incrociamo le dita...

Secondo me ti apri il file direttamente da Matlab senza problemi.

Link al commento
Condividi su altri siti

 Questo sembrava il tuo problema...

Il problema è che i decimali sono separati con la virgola e matlab li vuole con il punto. C'è uno script che posso inserire su matlab che mi converta direttamente tutte le virgole in punti (dato che ho anche altre cartelle di dati simili)? oppure dev per forza convertirle su Excel?

-

 

E questo è un suggerimento risolutivo:

Per aprire il file in MATLAB, puoi fare così. In pratica ti salvi il file Excel come un file di Testo e poi lo apri da MATLAB con i vari comandi.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...