Importare files .csv e calcolare media e deviazione standard

di il
1 risposte

Importare files .csv e calcolare media e deviazione standard

Salve a tutti, da qualche giorno combatto con questo programmino che dovrebbe aiutarmi a caricare una grande mole di dati e risparmiare tempo. Il mio obiettivo è caricare, a gruppi di 10, dei files csv e calcolare in uscita la media e la deviazione standard delle ordinate. Ho scritto il codice che fino a ieri sembrasse funzionare, ma oggi ho un errore che non riesco a correggere.

Il codice è il seguente:
clear all;
clc;
which_column = 5; 
dirstats = dir('*.csv');
col3Complete=0;
col4Complete=0;
for K = 1:length(dirstats)
   [num,txt,raw] = xlsread(dirstats(K).name);
   col3=num(:,3);
   col4=num(:,4);
   col3Complete=[col3Complete;col3];
   col4Complete=[col4Complete;col4];
   avgVal(K)=mean(col4(:));
end
col3Complete(1)=[];
col4Complete(1)=[];
B = reshape(col4Complete,[5000,K]);
m=mean(B,2);
C = reshape (col4Complete,[5000,K]);
S=std(C,0,2);
L'errore che ricevo è :
Attempted to access num(:,3); index out of bounds because size(num)=[0,0].

Error in csvBatchRead (line 9)
   col3=num(:,3);
Qualcuno può aiutarmi ?

1 Risposte

  • Re: Importare files .csv e calcolare media e deviazione standard

    Perchè usi xlsread per leggere files ".cvs"?

    Per leggere i files ".cvs" puoi usare la funzione "csvread"
    >> help csvread
    csvread Read a comma separated value file.
    M = csvread('FILENAME') reads a comma separated value formatted file
    FILENAME. The result is returned in M. The file can only contain
    numeric values.

    M = csvread('FILENAME',R,C) reads data from the comma separated value
    formatted file starting at row R and column C. R and C are zero-
    based so that R=0 and C=0 specifies the first value in the file.

    M = csvread('FILENAME',R,C,RNG) reads only the range specified
    by RNG = [R1 C1 R2 C2] where (R1,C1) is the upper-left corner of
    the data to be read and (R2,C2) is the lower-right corner. RNG
    can also be specified using spreadsheet notation as in RNG = 'A1..B7'.

    csvread fills empty delimited fields with zero. Data files where
    the lines end with a comma will produce a result with an extra last
    column filled with zeros.
    Per quanto riguarda l'errore
    Attempted to access num(:,3); index out of bounds because size(num)=[0,0].
    sembrerebbe che la funzione "xlsread" non sia riuscita a leggere correttamente il file in input.

    Per risolvere il problema potresti:

    [*] hai scritto che il programma "sembrava" funzionare": hai modificato il programma? Sono cambiati i files da leggere (magari il loro formato)?
    [*] l'istruzione
    dirstats = dir('*.csv');
    lista i files ".csv" nella directory corrente. Hai verificato che nella directory corrente ci sia almeno un file ".csv"?
    [*] verificare qual è il file di input che non viene letto in modo corretto: lo puoi identificare facilmente, il nome del file è contenuto in "dirstats(K)"
    [*] aprire il file in questione e verificare che il suo contenuto ed il formato siano corretti
    [*] oppure potresti provare a usare la funzione "csvread"

    Se potessi pubblicare un estratto del file od il file intero (eventualmente su dropbox o simile se troppo grosso) si potrebbe provare a capire meglio il problema.

    In mancanza di altre informazioni, purtroppo, non posso fare di più per aiutarti.

    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte