Creazione di un ciclo per creazioni di matrici giornaliere

di il
4 risposte

Creazione di un ciclo per creazioni di matrici giornaliere

Salve a tutti.
devo creare una serie di matrici di temperatura mensili. il comando per eseguirne una è il seguente :

% SST1= ncread('Users\Alessio\Desktop\Materiale Naomi\satellite sea surface temperature\2001\20010101000000-GOS-L4_GHRSST-SSTfnd-OISST_HR_REP-MED-v02.0-fv01.0.nc','analysed_sst');

dove :
Users\Alessio\Desktop\Materiale Naomi\satellite sea surface temperature\2001 e il percorso dove è presente il file.

20010101000000-GOS-L4_GHRSST-SSTfnd-OISST_HR_REP-MED-v02.0-fv01.0.nc : e il file dove sono presenti i valori di temperatura.
di questo file la seguente parte è fissa per tutti i file GOS-L4_GHRSST-SSTfnd-OISST_HR_REP-MED-v02.0-fv01.0.nc mentre la prima parte ovvero 20010101000000 cambia. in particolare : 2001 è anno, 01 il mese e 01 e il giorno.
Come faccio a creare i resti giorni del mese 1 senza dover cambiare manualmente ogni comando ovvero utilizzando un ciclo che me li crei direttamente?
Grazie per l'aiuto.

4 Risposte

  • Re: Creazione di un ciclo per creazioni di matrici giornaliere

    Una possibile soluzione potrebbe essere:

    [*] creare una stringa che contenga la parte costante del nome dei file
    [*] spezzare la parte variabile del nome nelle sua parti (anno, mese, giorno) in altrettante variabili
    [*] inserisci il codice per la lettura dei files in un loop nel quale, ad ogni iterazione incrementerai le variabili "anno", "mese" ecc.
    [*] converti queste variabili in stringhe con la funzione "num2str"
    [*] concatena tutte le stringhe
  • Re: Creazione di un ciclo per creazioni di matrici giornaliere

    Variabileanno='2001';
    variabilemese='01';
    radice_nome='000000-GOS-L4_GHRSST-SSTfnd-OISST_HR_REP-MED-v02.0-fv01.0';
    path_files='Users\Alessio\Desktop\Materiale Naomi\satellite sea surface temperature\2001\';
    file_ext='.nc';
    n_files=31;

    for k=1:n_files

    if(k < 10)
    zero_set='0';
    else
    zero_set='';

    input_file = [path_files variabileanno variabilemese zero_set num2str(k) radice_nome file_ext];

    SST_day= ncread(input_file,'analysed_sst');
    end
    end

    ho fatto cosi. Solo che in questo modo mi crea solo l'ultima matrice anziche crearle tutte e 31 nel caso del mese di Gennaio. come mai?
  • Re: Creazione di un ciclo per creazioni di matrici giornaliere

    
    YYYY_iniz=2017;
    MM_iniz=11;
    dd_iniz=21;
    hh_iniz=0;
    min_iniz=0;
    YYYY_end=2018;
    MM_end=7;
    dd_end=10;
    hh_end=23;
    min_end=59;
    t_iniz_file=datetime(YYYY_iniz,MM_iniz,dd_iniz,hh_iniz,min_iniz,0);
    t_end_file=datetime(YYYY_end,MM_end,dd_end,hh_end,min_end,0);
    t_iniz_proc=datenum(datetime(YYYY_iniz,MM_iniz,dd_iniz,hh_iniz,min_iniz,0));
    t_end_proc=datenum(datetime(YYYY_end,MM_end,dd_end,hh_end,min_end,0));
    
    %%%%%% isolo l'intervallo considerato e creo una matrice che contiene
    %%%%%% l'output per il solo intervallo di tempo desiderato
    tempo=(t_iniz_file:minutes(1):t_end_file)';
    tempo_double=[datenum(tempo),(1:1:length(tempo))'];
    data=[tempo_double,data];
    row_iniz=find(tempo_double(:)==t_iniz_proc);
    row_end=find(tempo_double(:)==t_end_proc);
    t1=tempo_double(row_iniz,2);
    t2=tempo_double(row_end,2);
    orario=zeros(length(tempo),6);
    for i=1:length(tempo(:,1));
        orario(i,:)=datevec(datestr(tempo(i,:)));
    end
    GIORNI=datevec((t_iniz_file:days(1):t_end_file)');
    
    for i=1:length(GIORNI(:,1))
    YEAR=GIORNI(i,1);
    MONTH=GIORNI(i,2);
    DAY=GIORNI(i,3);
    k=1;
    
       for j=1:length(data(:,1))
           if YEAR==orario(j,1) && MONTH==orario(j,2) && DAY==orario(j,3);
               COUNTER(k,1)=data(j,2);
               k=k+1;
           else 
           end
       end
    Questo è un codice che ho usato per creare dei vettori orari che iniziano nell'istante indicato e terminano nell'istante indicato, con precisione 1 minuto. A questi poi venivano assegnati dei dati che erano stati monitorati. Spero possa esserti utile.
  • Re: Creazione di un ciclo per creazioni di matrici giornaliere

    Grazie mille proverò questo codice. terrò presente questo codice quando mi servirà
Devi accedere o registrarti per scrivere nel forum
4 risposte