Conversione tipi di dati in Matlab

di il
1 risposte

Conversione tipi di dati in Matlab

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.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte