Buongiorno a tutti!
Sono nuovo di questo forum e ho il seguente problema con matlab. Devo leggere e trascrivere su un nuovo file di testo dei dati, che però nel file originario si trovano attaccati tra loro, pur essendo informazioni diverse (mesi e giorni). Per questo motivo ho utilizzato un codice che converta cell arrays in character arrays e poi inserisca i valori numerici corrispondenti nel nuovo file, dove i dati di interesse sono da collocarsi appunto in stringhe orizzontali, interspaziati tra loro. Il codice è il seguente:
names = dir('*.dly');
number_of_basins = numel(names); %438
for i = 1 %:number_of_basins
filename = names(i).name;
fid = fopen(filename);
data = (char(textscan(fid, '%s\n', 'whitespace', '')));
fclose(fid);
year = str2num(data(:, 1:4));
month = str2num(data(:, 5:6));
day = str2num(data(:, 7:8));
P = str2num(data(:, 9:18)); %precipitation, mm/day
PE = str2num(data(:, 19:28)); %climatological potential evaporation, mm/day
Q = str2num(data(:, 29:38)); %streamflow, mm/day
Tmax = str2num(data(:, 39:48)); %daily maximum air temperature (Celsius)
Tmin = str2num(data(:, 49:58)); %daily minimum air temperature (Celsius)
Q(Q < 0) = NaN; %negative values are missing
%create the input file for the script main16
fid=fopen('MyFile.txt','w');
fprintf(fid, '%2u %2u %2u %f %f\n', [day month year P Q]');
fclose(fid);
Matlab mi dà errore sulla funzione char, dicendo che gli elementi delle celle devono essere character arrays, come se avesse dei problemi nella conversione dei dati. Qualcuno sa dirmi se sbaglio qualcosa o se c'è comunque un modo per scrivere separatamente in un nuovo file dei dati che nel file originario sono si incolonnati ma talvolta attaccati? Spero in un vostro aiuto, grazie mille.