Effacer les filtres
Effacer les filtres

Problem adding headers to a matrix and saving it in txt file

3 vues (au cours des 30 derniers jours)
Alex castilla
Alex castilla le 12 Avr 2018
Commenté : Alex castilla le 13 Avr 2018
Hello everyone,
I have a matrix called data (2618x17) I would like to add headers to each column and save it in a TXT file. I did the following code but it doesn't work. Can someone help me fix this problem? Thanks!
headers={'Timestamp','PosX','PosZ','PosY','RotX','RotY','RotZ','RPosX','RPosZ','RPosY','RRotX','RRotY','RRotZ','velocity','acceleration','curvature','target_reached'};
newdata=[headers; num2cell(data)]; dlmwrite('file_treated.txt',newdata);

Réponse acceptée

Stephen23
Stephen23 le 12 Avr 2018
Modifié(e) : Stephen23 le 12 Avr 2018
dlmwrite only writes numeric data: its help states that it "writes numeric data in array M...". You do not have a numeric array, you have a mixed cell array.
If you want to write mixed char/numeric (e.g numeric data with a header) then you could use xlswrite, writetable, or do-it-yourself with fprintf.
  3 commentaires
Stephen23
Stephen23 le 12 Avr 2018
Modifié(e) : Stephen23 le 12 Avr 2018
You could use fprintf:
headers={'Timestamp','PosX','PosZ','PosY','RotX','RotY','RotZ','RPosX','RPosZ','RPosY','RRotX','RRotY','RRotZ','velocity','acceleration','curvature','target_reached'};
data = rand(4,17); % four rows of fake data.
fmt = repmat(',%.12g',1,size(data,2)); % pick numeric format to suit!
fmt = [fmt(2:end),'\n'];
[fid,msg] = fopen('temp4.csv','wt');
assert(fid>=3,msg)
fprintf(fid,'%s',headers{1})
fprintf(fid,',%s',headers{2:end})
fprintf(fid,'\n')
fprintf(fid,fmt,data.')
fclose(fid);
The file that this created is attached to this comment.
Alex castilla
Alex castilla le 13 Avr 2018
Thanks so much. It works perfectly.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by