Media in un cell

di Anonimizzato15380 il
2 risposte
Ciao a tutti, devo caricare su matlab dei file exel che contengono i dati raccolti da una macchina che estrae energia dalle onde, la tabella contiene: data, ora, velocità del vento radiazione ecc ecc.
Poichè i dati acquisiti non sono omogenei, cioè in alcune giornate la macchina registra i dati ogni 10 minuti, in altre ogni mezz'ora, io voglio creare una nuova cell che mi contiene un solo valore all'ora dato dalla media dei vari rilevamenti della macchina nell'ora. Io ho iniziato a lavorare cosi
textdata è il file exel (in allegato non riesco a metterlo perchè non mi fa caricare il file .xls ma posso inviarlo via mail privatamente per farvi capire) caricato in matlab
Ho eliminato le prime 2 righe perchè contenevano il nome delle variabilli
textdata(1,:)=[];%elimina la prima riga
textdata(1,:)=[];
A=textdata(:,1); %cell con la prima colonna di textdata che contiene le date
B=textdata(:,2); %cell con la seconda colonna di textdata che contiene le ore
C=strcat(A,B); %concatena le 2 cell
serialtime=datenum(C,'dd.mm.yyyyHH:MM:SS'); %attribuisce un numero
dt = datestr(serialtime,'dd.mm.yyyyHH:MM:SS');
Adesso non so come fare per fare la media, come faccio a fare un ciclo for controllando le ore???
Grazie

2 Risposte

  • Buona sera
    un consiglio se devi caricare file excel usa questi comandi,perché riesce a caricare file excel e ti divide in automatico la parte numerica dalla testule.

    filename = 'NOMEFILE.xlsx'; %file da caricare
    sheet = 3; % foglio di excel
    xlRange = 'D1:E61'; %colonne e righe in questo caso ti carica le colonne D ed E dalla riga 1 alla 61

    [MosNorm, textMN] = xlsread(filename, sheet, xlRange);

    per il resto non sapendo come è organizato il file excel non saprei, dovrei capire come sono memorizzate le date e gli orari.
    in ogni caso avrei pensato ad una cosa del genere

    filename = 'orario.xlsx';
    sheet = 1;
    xlRange = 'A1:B6';
    [num, textMN] = xlsread(filename, sheet, xlRange);
    for i=1:6
    Nuovo_testo=textMN{i,1};
    ora_stringa=Nuovo_testo(12:13);
    ora(i)=str2num(ora_stringa)
    end
    inizio=1;
    fine=6;
    for i=1:5
    if ora(i)~=ora(i+1)
    fine=i;
    media=mean(num(inizio:fine));
    inizio=i+1;
    end
    end
  • Grazie mille!
Devi accedere o registrarti per scrivere nel forum
2 risposte