Importazione dati e concatenazione matrici

di il
2 risposte

Importazione dati e concatenazione matrici

Ciao, sono nuovo in questo forum e ho cominciato da qualche giorno ad usare matlab

Ho caricato file di 9 file txt con il comando load; questi file contengono dati numerici su 2 colonne.
cosi mi si sono generate le 9 matrici nel workspace, che si chiamano rispettivamente SA1,SA2,...,SA9 (105x2 double).
volevo sapere come metterle insieme in un'unica matrice utilizzando un ciclo piuttosto che fare a mano A=[SA1,SA2,....] (che per 9 file è ok ma per centinaia diventerebbe laborioso ) e come poi impostare il ciclo per creare una matrice B= A(cancellando le colonne dispari)

In alternativa c'è un modo per caricare i dati da file.txt da una cartella, in modo da prendere solo la seconda colonna presente nei dati?
(ovviamente volevo creare uno script ed evitare l'utilizzo dell'importazione guidata di matlab che funziona molto bene ma costringe a prendere in mano un file alla volta)
grazie in anticipo per l'aiuto

2 Risposte

  • Re: Importazione dati e concatenazione matrici

    Per importare i files si può procedere in questo modo:

    - identificare il numero di file da importare: se il numero è noto a priori, è sufficiente assegnarlo ad una variabile, in caso contrario si può usare la funzione "dir"

    - leggere in un ciclo "for" gli "n" files di input creando il nome del file come stringa in modo automatico ad ogni iterazione

    - concatenare, nel corso del loop, le matrice lette

    Per rimuovere le colonne dispari (o, che è lo stesso, estrarre le colonne pari) si può procedere sfruttando le funzionalità di "indexing" (http://uk.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html) di MatLab.

    Nell'esempio che segue, vengono letti i 4 files "SA1.txt", "SA2.txt", "SA3.txt", "SA4.txt" e sono riportate le istruzioni per le due modalità di identificazione del numero (4) di files da importare.
    
    % The number of files to be read is known
    n_files=4;
    % The number of files to be read is unknown
    n_files=length(dir('SA*.txt'));
    % Initialize the output matrix
    M=[];
    % Read the input files and concatenate the matrices
    for i=1:n_files
       M=[M load(['SA' num2str(i) '.txt'])]
    end
    % Extract the even columns
    M1=M(:,2:2:end)
    
  • Re: Importazione dati e concatenazione matrici

    Perfetto, grazie mille.
Devi accedere o registrarti per scrivere nel forum
2 risposte