How to save numerical array as file (any format) with different precisions (format) for different columns in the same array?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Deo
am 30 Mär. 2017
Kommentiert: Walter Roberson
am 30 Mär. 2017
Hi I am matlab 2016b user. I have one numerical array (950*2 double). When I save this, I want to save 1st column with integer format (no decimal point...I mean %.0f) and to save 2nd column with scientific notation with 16 sigifinicant digits....such as '4.123456789012345e-11'. This is important issue with processing speed in my code. So far, when I use .mat format (binary) with save' function, it gave 9 kb in file size. However, I may need to use no-binary format like...txt....csv...etc. When I tried fprintf and dlmwrite functions with diverse options, 26 kb was record with txt/csv format. I also saw some similar answers using loop for fprintf function, but regarding code running time issue, I hope I can hear another answer using for loop.
Do you know how to do it?
3 Kommentare
Walter Roberson
am 30 Mär. 2017
Consider sending the files in binary, but also providing the person with a program that allows them to view the binary as text. With 6 million files, you can be sure that the other person is not going to read the text of more than a very small fraction of them.
Akzeptierte Antwort
Guillaume
am 30 Mär. 2017
One simple way to write that matrix as text according to your specifications:
x = rand(950, 2) .* [100, 1]; %demo data, requires R2016b or later
fid = fopen('somename.csv', 'wt');
fprintf(fid, '%0.f, %.16e\n', x.');
fclose(fid);
1 Kommentar
Weitere Antworten (1)
Walter Roberson
am 30 Mär. 2017
fid = fopen('YourOutputFile.csv', 'wt');
fmt = '%d, %.21e\n';
data = [round(YourArray(:,1)), YourArray(:,2)];
fprintf(fid, fmt, data .'); %transpose is important here
fclose(fid)
The text output will definitely be larger than binary.
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!