Problema con un ciclo IF

di Anonimizzato23909 il
3 risposte
Salve a tutti! ho un problema con un ciclo IF.
In pratica ho dei file che si chiamano per esempio : day_002 ; day_030; day_220 e cosi via fino a day_366;
ogni file devo caricarlo al fine di estrarre i valori presenti in ogni file tipo temperatura, salinità ecc.
A tal proposito ho creato un ciclo IF di questo tipo :

for k=2:31

if 'day_0' num2str(k)
radice_nome_file='day_0';

eval file_name=(['E:\MATERIALE TESI\Validation\Tirreno_2005\',radice_nome_file,num2str(k),'.nc']);
ncid = netcdf.open (file_name, 'NETCDF4');
eval ([ 'Tempday' num2str(k) '= netcdf.getVar(ncid,6)']);

elseif 'day_00' num2str(k)

radice_nome_file='day_00';
eval file_name=(['E:\MATERIALE TESI\Validation\Tirreno_2005\',radice_nome_file,num2str(k),'.nc']);
ncid = netcdf.open (file_name, 'NETCDF4');
eval ([ 'Tempday' num2str(k) '= netcdf.getVar(ncid,6)']);

elseif 'day_',num2str(k)
radice_nome_file='day_';
eval file_name=(['E:\MATERIALE TESI\Validation\Tirreno_2005\',radice_nome_file,num2str(k),'.nc']);
ncid = netcdf.open (file_name, 'NETCDF4');
eval ([ 'Tempday' num2str(k) '= netcdf.getVar(ncid,6)']);
end
end

in ogni ciclo ho espresso il comando che se la radice del nome è day_0 o day_00 o day_ di eseguire il corrispettivo comando che sarebbe quello di estrarre dal file la matrice di temperatura chiamandola tempday(numero corrispettivo).
Solo che ho un problema quando per esempio carico i file con il nome : day_002 a day_009 o da day_100 a day_366 in quanto con Matlab mi esegue solo il primo ciclo IF ignorando gli altri due cicli elseif( non capisce che in caso di errore di provare con gli altri 2 anche e non solo con il primo per intenderci). Come rivolvo questo problema?
Grazie mille a chi mi può dare una mano.

3 Risposte

  • Salve, l ho postata perché pensavo che poteva essere un'altra strada alla soluzione della domanda che ho postato un mese fa, magari poteva risultare utile a qualcuno che ha avuto un problema simile al mio e lo voleva risolvere in un'altro modo.

    https://www.iprogrammatori.it/forum-programmazione/matlab-simulink/come-far-leggere-gli-zeri-iniziali-file-matlab-t35351.html
    Comunque sia ho trovato questa risposta che Lei mi ha dato molto utile e semplice. La ringrazio ancora per l'aiuto fornito. Ora devo solo creare la matrice Temp collegando ai vari indirizzi.( P.S ho avuto problemi con il PC durante questo mese e da poco sono riuscito a sistemarlo)
  • In base a quello che hai scritto:
    
    if 'day_0' num2str(k)
    radice_nome_file='day_0';
    ...
    
    lo scritto dovrebbe generare un messaggio di errore.
    Almeno con MatLab 2015, l'istruzione 'day_0' num2str(k) è sbagliata.
Devi accedere o registrarti per scrivere nel forum
3 risposte