2012-03-16 15 views
6

Sto cercando di leggere una matrice prodotta in Matlab in una matrice 2D in Java. Sto usando jmatio finora per la scrittura da Java a un file .mat (con successo), ma ora non è in grado di gestire per andare il contrario. Sono riuscito a importare una matrice in un oggetto MLArray utilizzando questo codice:la lettura dei dati da MATLAB in Java

matfilereader = new MatFileReader("filename.mat"); 
MLArray j = matfilereader.getMLArray("dataname"); 

Ma oltre a ottenere la sua rappresentazione di stringa non riuscivo ad accedere ai dati stessi. Ho trovato alcun esempio di questo o la documentazione sulla libreria stessa, e ho scritto una funzione per analizzare la stringa intire in un letto [] [] array, ma questo è solo un bene se la matrice è più piccolo di 1000 articoli ...

sarei grato per qualsiasi esperienza o suggerimenti, grazie,

Amir

+0

Hai provato a usare MLDouble sottoclasse invece di MLArray? Hai controllato in MATLAB che il file mat è stato salvato correttamente? – yuk

+0

In che senso usa MLDouble invece di MLArray? MatfileReader ha solo questa API di restituire variabili come MLArray. E riguardo al file - sì, ne ho provati diversi e stanno tutti bene. – Amir

+0

Intendevo lanciare MLArray su MLDouble. Puoi provare 'MLDouble j = (MLDouble) matfilereader.getMLArray ("DataName");'? – yuk

risposta

0

non ho familiarità con quello strumento, ma è piuttosto vecchia. Prova a salvare su una versione precedente del file *.mat e verifica se i risultati cambiano. Cioè, aggiungere sia la bandiera '-v7.0' o '-v6' quando si salva si r file * .mat.

codice Esempio:

save filename var1 var2 -v7.0 

o

save filename var1 var2 -v6 
+0

L'ho provato ora, con gli stessi risultati. Ma non è un errore che ottengo o qualcosa legato al file, il problema è quale codice utilizzare per ottenere MLArray in variabili java? – Amir

2

matfilereader.getMLArray ha diverse sottoclassi di accedere diversi tipi di dati in oggetto MLArray.

Per rappresentare doppio array si può lanciare MLArray a MLDouble:

MLDouble j = (MLDouble)matfilereader.getMLArray("dataname"); 
Problemi correlati