Caricare file .mat attraverso stringa

di il
6 risposte

Caricare file .mat attraverso stringa

Salve a tutti,
sono nuovo e ho iniziato ad usare Octave e Matlab per la tesi.
Mi chiedevo come si potesse caricare un file attraverso una funzione, cambiando semplicemente il finale di una stringa.
Ho diversi file che contengono una matrice tridimensionale riferita ad ogni anno di dati per ogni grid. Devo caricarli e unirli in un'unica matrice a 4dimensioni. Il mio problema è caricare i file in modo consecutivo. Ho provato a fare un vettore di stringhe con tutti i nomi dei file (a cui cambia solamente in numero dell'anno messo alla fine)
st={'sias2003.mat',' sias2004.mat',...}
fare quindi load(st(1)) per prova ma ricevo in riga di comando:
"Error using load Argument must contain a string."

come posso fare quindi a caricarli direttamente? o comunque come posso risolvere il problema per ottenere la mia matrice con tutti i dati?

grazie in anticipo.

6 Risposte

  • Re: Caricare file .mat attraverso stringa

    Devi passargli l'indice tra parentesi graffe:
    load(st{1})
  • Re: Caricare file .mat attraverso stringa

    Grazie mille!!

    immaginavo fosse una banalità!
  • Re: Caricare file .mat attraverso stringa

  • Re: Caricare file .mat attraverso stringa

    Scusa se ti disturbo ancora, sono riuscito a fare grazie al tuo aiuto per il caricamento la matrice 4d che mi serviva. Ora la devo confrontare con quella di un altro database di cui ho i dati in .txt con cui devo fare la stessa cosa.
    siccome la loro denominazione è sempre gpccyymm.txt (yy = anno, mm=mese)
    ho provato a creare un vettore di stringhe esattamente come quello precedente ma concatenando, dando in input due matrice stm e sty con all'interno i valori rispettivi
    ad esempio per la stringa dei mesi (stm) ho creato
    stm={'01','02','03','04','05','06','07','08','09','10','11','12'}
    Stessa cosa per gli anni (sty)

    ho provato a farla la concatenazione in questo modo:
    function str = stringhegpcc(stm,sty)
    
    s1='gpcc';
    s2='.txt';
    for i=1:size(stm)
        for j=1:size(sty)
        str=strcat(s1,sty(j),stm(i),s2);
        end
    end
    
    ma ricevo in uscita
    Undefined function or variable 'stringhegpcc' for input arguments of type 'cell'.
    ho provato anche a mettere le parentesi graffe (stm{j}) ma ho sempre lo stesso risultato
    come lo posso risolvere?
  • Re: Caricare file .mat attraverso stringa

    Non dipende dal codice, che funziona (nel senso che non da errori se lo lanci al di fuori della funzione - anche se ancora non fa quello che vuoi che faccia).
    Credo dipenda da come richiami la funzione.
    La funzione è salvata in un file a parte? questo file ha lo stesso nome della funzione? E' nella cartella in cui stai lavorando (la Current Directory)?
  • Re: Caricare file .mat attraverso stringa

    Sì sì come sempre.
    ho aperto e chiuso matlab e ora funziona.
    misteri.

    ho modificato la funziona e ottengo esattamente il vettore che mi serviva grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte