Save serial datenum as decimal, not scientific notation
8 次查看(过去 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
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?
采纳的回答
更多回答(1 个)
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!