MATLAB Answers


Help with file format conversion please!

Asked by Michel Nieuwoudt on 17 Sep 2019
Latest activity Commented on by Michel Nieuwoudt on 17 Sep 2019
I have a set of numbers of XY data (.csv format), with each XY value in the format: 2.024890e 002,2.069117e 003. How do I convert to format 20248.90 2069.117 instead, i.e. nonscientific and spaces not commas? I have attached the file :)
Thank you, and sorry for the really basic question!


Sign in to comment.

1 Answer

Answer by Stephan
on 17 Sep 2019
 Accepted Answer

% Setup the Import Options and import the data
opts = delimitedTextImportOptions("NumVariables", 2);
% Specify range and delimiter
opts.DataLines = [1, Inf];
opts.Delimiter = ",";
% Specify column names and types
opts.PreserveVariableNames = true;
opts.VariableNames = ["x", "y"];
opts.VariableTypes = ["double", "double"];
% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Import the data
xy = readtable("YOUR_FULL_FILE_PATH_HERE\xy.csv", opts);
% Convert to output type
xy = table2array(xy);
% Clear temporary variables
clear opts


on 17 Sep 2019
Use csvwrite or dlmwrite. csvwrite uses 5 digits of precision only. dlmwrite lets you specify it.
csvwrite('xy.txt', xy); %5 digits only
dlmwrite('xy.txt', xy, 'precision', '7'); %7 digits
dlmwrite('xy.txt', xy, 'precision', '%3.7f'); %to specify the format directly. See fprintf doc for format specification
on 17 Sep 2019
You should follow Guillaumes advise - the code i used is the lazy way: Matlab auto generated code from the import tool (this is why it is that large). Therefore it is useful if you provide your Matlab release when asking questions here. If you do not, i have to assume you use the latest release...
Thank you so much Guillaume :) , and thank you Stephan. I have the 2018b version; will add this next time.

Sign in to comment.