I need some help to formatting a data file in matlab.

1 vue (au cours des 30 derniers jours)
Bruno Souza
Bruno Souza le 22 Déc 2017
Commenté : Bruno Souza le 13 Jan 2018
I need help formatting a data file in matlab. It is for my college research. The file has the pattern below.
[ No ] [ Temp ]
1 1 01:00:00
1 20.00
2 20.00
3 20.00
4 20.00
5 20.00
1 1 02:00:00
1 20.00
2 20.00
3 20.00
4 20.00
5 20.00
....
I would like to know how to store the data this way:
Time No1 No2 No3 ...
00:00:00 20.00 20.00 20.00 (here is the temp in each "no")
01:00:00 20.00 20.00 20.00 (the temp is changing by the time, but it is just an example)
02:00:00 20.00 20.00 20.00
If someone knows how to do this, please help me. My contact is brunojsouza@outlook.com Thank you
  4 commentaires
Walter Roberson
Walter Roberson le 22 Déc 2017
I do not mean the value of he entries.
You have
1 1 01:00:00
1 20.00
2 20.00
3 20.00
4 20.00
5 20.00
1 1 02:00:00
which has a line with a time, and then exactly 5 entries without a time, and then back to a line with a time. The next section shows exactly 5 entries after the line with the time as well. Is that 5 constant? Will there ever be cases like,
1 1 01:00:00
1 20.00
2 20.00
3 20.00
4 20.00
5 20.00
6 20.00
for example?
If the number after the line with the time is not always 5 lines, then is it the consistent within any one file?
Bruno Souza
Bruno Souza le 22 Déc 2017
Sorry, is always 5! 5 is the number of "NÓ" (in Portuguese means "dot") and the data show the temperature in each dot by hour

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 23 Déc 2017
fid = fopen('YourFileName.txt', 'rt');
fgetl(fid); %ignore the header
counter = 0;
while true
timeline = fgetl(fid);
if ~ischar(timeline); break; end %reached end of file
hms = sscanf(timeline, '%*d%*d%d:%d:%d');
counter = counter + 1;
Time(counter) = duration(hms(1), hms(2), hms(3));
No(counter, :) = cell2mat( textscan(fid, '%*f%f', 5) );
end
fclose(fid);
Then,
T = array2timetable(No, 'RowTimes', Time, 'VariableNames', {'No1', 'No2', 'No3', 'No4', 'No5'});
or
T = cell2table( [num2cell(Time), num2cell(No)], 'VariableNames', {'Time', 'No1', 'No2', 'No3', 'No4', 'No5'});
  10 commentaires
Bruno Souza
Bruno Souza le 23 Déc 2017
yes! thank you!!!
Bruno Souza
Bruno Souza le 13 Jan 2018
If I need to put this table T in a file, How can I do this? (I had to edit and plus more colums, so now It has No1.. until No21. I'll need to join this table with another data later. One file (FileA) is a matrix [744x2] from number one until number 744, and I'll put It in the first colum like "Hora". The other file (FileB) is the Clima, It is a matrix [744x2] too, but are random values. It will be like that:
Hora No1 No2 No3 ... No21 Clima
1 ... ... ... 20.05
2 ... 25.04
3 ... ...
.. ... ...
744 ... 21.09

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by