csvwrite is storing wrong number

8 ビュー (過去 30 日間)
Abolfazl Taghribi
Abolfazl Taghribi 2019 年 1 月 25 日
編集済み: dpb 2019 年 1 月 28 日
I'm using "csvwrite" command for storing a 2d matrix with size 104937*1810. Is there any limitation on this command or csv file? The produced file is 670 MB but in each stored row there are exactly 5 numbers which are not the same as matrix in the matlab. All numbers are int32 and the wrong numbers are in different colomns in each row.
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 1 月 25 日
Would it be possible to xlswrite() or writetable() to a .xlsx file and attach that for us to test with?
Also which release are you using?

サインインしてコメントする。

採用された回答

dpb
dpb 2019 年 1 月 26 日
編集済み: dpb 2019 年 1 月 26 日
>> tstary=int32(randi(2^31,104937,1810));
>> whos tstary
Name Size Bytes Class Attributes
tstary 104937x1810 759743880 int32
>> tstary(1:3,1:5)
ans =
3×10 int32 matrix
1186639717 717774140 2035668545 471416973 522550194
2056308186 151423171 131112521 1937130594 1414722413
1917344954 1185569608 203068410 614639920 243357862
>> csvwrite('tstary.csv',tstary)
Content of tstary.csv from file viewer...
1.1866e+09,7.1777e+08,2.0357e+09,4.7142e+08,5.2255e+08,1.1246e+09,1.5343e+09,3.2607e+08, ...
2.0563e+09,1.5142e+08,1.3111e+08,1.9371e+09,1.4147e+09,7.5605e+08,7.9947e+08,6.188e+08, ...
1.9173e+09,1.1856e+09,2.0307e+08,6.1464e+08,2.4336e+08,9.5385e+08,1.0362e+09,2.0352e+09, ...
...
The content is exactly what the documentaion for csvwrite says it will be--the data in %g format with a maximum of 5 digits of precision.
The help there indicates to use dlmwrite with optional precision argument, but for such a large file, using a text format is absurd way to store/move/transport data. Use stream or some other form instead.
But, csvread is working as expected.
  3 件のコメント
dpb
dpb 2019 年 1 月 26 日
編集済み: dpb 2019 年 1 月 28 日
I misunderstood initially, too, I think, but decided that probably it was a case of the symptom not being recognized as to cause that produced a mistaken interpretation of the cause of the difference and that led to asking the wrong question--or wording the question to be about the wrong problem.
Abolfazl Taghribi
Abolfazl Taghribi 2019 年 1 月 27 日
編集済み: Abolfazl Taghribi 2019 年 1 月 27 日
I did not mention the "maximum of 5 digits of precision" limitation for csvwrite before. This was the problem. I should use dlmwrite instead. Thanks dpl .

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by