Save serial datenum as decimal, not scientific notation

9 次查看(过去 30 天)
Hello,
I'm reading in a csv file containing timestamps as serial numbers. After some computation, I need to save the array back as a csv file. However, when importing, Matlab converts the decimal datenums into scientific format, i.e. 737389.4167 becomes 7.3739e+05 and they're stored in that format. I know this is the case because when I subsequently import the data in Excel, the format is different between original and edited file. This causes problems when importing the files into
I tried to work around it by converting it in str and cells, but that creates other problems when saving as csv.
Matlab R2018a
[file,path] = uigetfile('*.csv');
fn = fullfile(path,file);
A = csvread(fn);
[filepath,filename,ext] = fileparts(fn);
fnout=fullfile(path,strcat(filename,'_edited',ext));
csvwrite(fnout,A)
Any help is really appreciated as this has created a lot of headaches.
  2 个评论
Star Strider
Star Strider 2019-9-26
Please share the original file and the code you are using to read it and write write the new file. Also, what MATLAB version/release are you using?

请先登录,再进行评论。

采纳的回答

Anke Kügler
Anke Kügler 2019-9-26
Ok, dlmwrite instead of csvwrite seemed to fix it. So here's what I'm using instead, now:
[file,path] = uigetfile('*.csv');
fn = fullfile(path,file);
A = csvread(fn);
[filepath,filename,ext] = fileparts(fn);
fnout=fullfile(path,strcat(filename,'_edited',ext));
dlmwrite(fnout,A,'precision',15)

更多回答(1 个)

James Tursa
James Tursa 2019-9-26
编辑:James Tursa 2019-9-26
First, MATLAB stores all doubles the same way ... as IEEE binary floating point format. What you are seeing as "737389.4167 becomes 7.3739e+05" is simply a display issue. The underlying format for both is still IEEE binary floating point. E.g.,
>> x = 737389.4167
x =
7.3739e+05
>> format long
>> x
x =
7.373894166999999e+05
>> format short
>> x
x =
7.3739e+05
As far as your writing to csv being different from what you read in, you need to show us a sample of the csv file and also the code you are using for reading and writing. Then we can help you.
  2 个评论
Anke Kügler
Anke Kügler 2019-9-26
编辑:Anke Kügler 2019-9-26
I understand that and that's what I kept reading everywhere, yet, the problem persists. I've edited my post to include the code, but I cannot share any data. Let me try to reproduce a sample csv file.

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by