Cambio nome variabile

di il
1 risposte

Cambio nome variabile

Salve a tutti,
devo importare più file in matlab. Nello specifico mi interessa una determinata matrice, che in tutti i file ha lo stesso nome. Come caricare tale matrice senza sovrascriverla? Come cambiarle nome ad ogni file importato?
grazie

1 Risposte

  • Re: Cambio nome variabile

    Per poter provare a dare una risposta puntuale, occorrono alcune informazioni in più:

    [*] di che tipo sono i file da importare? ".mat"?
    [*] si sa quanti siano i files da importare?
    [*] i files hanno una parte del nome che possa essere "composta iterativamente" (es. "file_1.mat", "file_2.mat", "file_3.mat", ...) oppure si vogliono leggere tutti i files presenti in una directory? Questo serve per poter implementare un ciclo che li legga automaticamente
    [*] i files contengono solo una variabile (ancorchè con lo stesso nome)?
    [*] se i files contengono più variabili, si conosce il nome della variabile alla quale si vuole cambiare nome?

    In base alle risposte a queste domande può cambiare lo script che si deve implementare.

    Ad ogni modo, nelle ipotesi che:

    [*]i files da caricare siano 5
    [*] i files siano di tipo ".mat"
    [*] i files si chiamino: "file_1.mat", "file_2.mat", "file_3.mat", "file_4.mat", "file_5.mat"
    [*] i files contengano solo la variabile "m"

    lo script si può impostare così:

    [*] definizione della "radice" comune del nome dei files (nello specifico "file_")
    [*] costruzione del nome del file da caricare aggiungendo alla "radice" il valore dell'indice del loop
    [*] lettura iterativa dei files con la funzione "load"
    [*] utilizzo della funzione "eval" per la creazione di una nuova variabile con nome "xxx_i" dove "xxx" è il nome della variabile contenuta nel file, "i" è l'indice del loop: m_1, m_2, ...

    La soluzione proposta è stata implementata nello script che segue.
    
    % 
    % Definizione della radice del nome del file
    % 
    radice_nome_file='file_';
    % 
    % Definizione del nome della variabile comune a tutti i files
    % 
    nome_variabile='m';
    % 
    % Loop per la lettura dei files
    % 
    for i=1:5
       load([radice_nome_file num2str(i)])
    %    
    %    Crazione di una nuova varaibile ed assegnazioe ad essa della variabile
    %    letta dal file ".mat"
    %    
       eval([nome_variabile '_' num2str(i) '=' nome_variabile ';'])
    end
    
    Hope this helps.

    P. S. Perchè tre volte la stessa domanda nel giro di un minuto? Mi permetto un suggerimento, meglio cancellarne un paio prima che lo chieda il moderatore
Devi accedere o registrarti per scrivere nel forum
1 risposte