MATLAB Answers

Toby Feld
1

How can I export a matrix as a csv file?

Asked by Toby Feld
on 26 Apr 2016
Latest activity Commented on by Ian Mclennan on 15 Jul 2019
Hi,
I have a 320x2 matrix with doubles. I want to save it in a csv file in the following pattern:
234,2 671,5 735,1 264,2 346,7 ... etc.
I googled this problem and found the function csvwrite. However, when I use that function like this
csvwrite('test.txt',a)
I get the following:
234,2671,5735,1264,2346,7
What is going on here? How can I solve this issue?
Thanks a lot, Toby

  2 Comments

jgg
on 26 Apr 2016
Why do you want to export it like that? It seems really unnatural, and will be annoying to accomplish.
This thread really helped me, thank you for posting.

Sign in to comment.

Tags

4 Answers

Answer by Azzi Abdelmalek
on 26 Apr 2016

a=[234,2
671,5
735,1]
csvwrite('file.csv',a)

  4 Comments

Show 1 older comment
I appreciate you for the sharing
Being a Python user coming to Matlab I was a bit shocked to find that csvwrite truncates the data output.
csvwrite('u.csv', u)
File contents:
1000,957.6,917,878.13,840.9, ...
Then I happened to check the documentation and found this:
csvwrite is not recommended. Use writematrix instead. For more information, see Compatibility Considerations.
writematrix(u)
File contents:
1000,957.603280698574,917.004043204671,878.12608018665,840.896415253715, ...
Guillaume
on 13 Jul 2019
writematrix is fairly new and did not exist when this question was ask.
I was a bit shocked to find that csvwrite truncates the data output.
Any conversion of number to text will truncate the representation of most numbers, in python as well. As documented csvwrite has a precision of 5 digits. For more precision, the alternative at the time was dlmwrite. Interestingly writematrix also doesn't have an option of altering the precision and always use longg (15 digits of precision).

Sign in to comment.


Answer by Jos (10584)
on 26 Apr 2016

You and your computer disagree on what to use as a decimal symbol: a . or a ,
I strongly recommend you to use a decimal point. Probably that means you have to change your locale / regional settings in the operating system.

  0 Comments

Sign in to comment.


Answer by Toby Feld
on 26 Apr 2016
Edited by Toby Feld
on 26 Apr 2016

For some reason the example I used was re-edited by the forum software to let it appear in one line. I cannot figure out how to disable that formatting (seriously, WTF??). So here is how I want the CSV file to look as a png file. I hope the forum does not change graphic files.

  0 Comments

Sign in to comment.


Answer by Sindar
on 12 Mar 2019

It sounds like all you need to do is print a column vector instead of a row vector. This can be done easily:
csvwrite('test.txt',a.')
The '.' is important only if you have complex data

  0 Comments

Sign in to comment.