Apertura file e variabili iterative + spconvert

di il
1 risposte

Apertura file e variabili iterative + spconvert

Salve, avrei bisogno di estrarre dei dati da dei file numerati es. da Matrice_1 a Matrice_10 e di creare successivamente delle strutture dati matriciali con nomi del tipo M1, M2 ecc.
Ho provato a scriptare il tutto in questo modo

for k = 1:1:10
    prefix = 'Matrice_'
    str= num2str(k)
    suffix= '.dat'
    combinedStr= strcat(prefix,str,suffix)
    combinedStr2=strcat(prefix,str)
    load (combinedStr)
    S(k)=spconvert (combinedStr)
end
Ma ho 2 problemi, il primo è che la scrittura S(k) non genera un output del tipo S1, S2 ecc
ho provato con Sk, S[k], S"k" ma nessuna di questa sortisce il risultato voluto.
Il secondo problema è che combinedStr non è interpretato da spconvert come tipo di dato valido ma restituisce l'errore

Error in Script (line 20)
    S=spconvert (combinedStr)
in quanto invece di leggere la variabile stringa che ho assegnato a combinedStr interpreta come se combinedStr sia il nome file.
Ogni aiuto è ben accetto.
Grazie

1 Risposte

  • Re: Apertura file e variabili iterative + spconvert

    L'istruzione

    load (combinedStr)

    legge in input il file dati il nome del quale è definito dalla stringa "combinedStr" e, se il file è formattato in modo adeguato, restituisce nel workspace un vettore (o una matrice) con il nome " combinedStr2

    ==> i dati caricati dal file "Matrice_1.dat" verranno quindi assegnati alla variabile (matrice) "Matrice_1"
    ==> i dati caricati dal file "Matrice_2.dat" verranno quindi assegnati alla variabile (matrice) "Matrice_2"
    ecc.

    Quindi se i file di input hanno nomi che contengono un indice progressivo, le matrici caricate nel workspace avranno automaticamente un nome con indice progressivo.

    Per quanto riguarda l'errore relativo alla funzione "spconvert" ci sono due possibilità:

    [*] la funzione "lavora" con matrici sparse; i dati all'interno dei files "Matrice_1.dat" contengono effettivamente dati relativi a matrici sparse?
    [*] a prescindere dal formato dei files in input, la parte di istruzione "S(k)" è errata: non genera matrici con il nome "S1", "S2", ecc., ma indica semplicemente l'elemento "k-esimo" della matrice "S".

    Nel caso si voglia cambiare il nome della variabile, se cioè, come riportato nello script, si voglia rinominare le matrici nel modo seguente:

    Matrice_1 ==> S1
    Matrice_2 ==> S2
    ecc.

    si deve utilizzare, all'interno del ciclo "for" la funzione "eval nel modo seguente
    
    
    for k = 1:1:10
        prefix = 'Matrice_'
        str= num2str(k)
        suffix= '.dat'
        combinedStr= strcat(prefix,str,suffix)
        combinedStr2=strcat(prefix,str)
        load (combinedStr)
    
    %    S(k)=spconvert (combinedStr)
        eval(['S' num2str(k) '=spconvert(' combinedStr2 ')'])
    %
    % oppure semplicemente l'istruzione seguente, nel caso i files Matrice_x.dat contengagno
    % matrici "normali" e non matrici sparse
    %
       eval(['S' num2str(k) '=' combinedStr2])
    end
    
    
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte