MATLAB Answers

How to write txt file contain double array and text header?

47 views (last 30 days)
Hello!!!!
I have to write a text file containg array and text header. My numeric array is in size of 33731x48. I knew that I can use fprint to output text file, but my double array has too many columns. I don't know how to set up the formatting operator for all double array element. I want all element to be floating point number (%f). I am thinking about writing 48 %f inside fprintf function For example,
fprintf(fid, '%f %f %f... %f r\n', array);
and there are 48 %f inside fprintf function, but it should be better way. So, could you please help me giving some advice?

  2 Comments

Danupon Subanapong
Danupon Subanapong on 23 Mar 2019
Hello Ravi,
Thank you so much for your reply. I attached part of numeric array. I cannot upload all data since it exceeds 5MB. But I think it is fine. Please check it.

Sign in to comment.

Accepted Answer

Rik
Rik on 23 Mar 2019
Edited: Rik on 23 Mar 2019
You can use repmat or sprintf to construct the FormatSpec.
array=rand(3000,48);
fid=fopen('test.txt','wt');%opening with the t flag auto-converts \n to \r\n on Windows
fprintf(fid,'some cool header text\n');
FormatSpec=[repmat('%f ',1,size(array,2)) 'r\n'];%or should that have been \r\n instead?
fprintf(fid,FormatSpec, array);
fclose(fid);

  3 Comments

Danupon Subanapong
Danupon Subanapong on 23 Mar 2019
I have got an error as below.
Error using horzcat
Dimensions of arrays being concatenated are not consistent.
The error is caused by this line.
FormatSpec=[repmat('%f ',size(array,2)) 'r\n'];%or should that have been \r\n instead?
I have checked it repmat('%f ',size(array,2)) works fine, but when combining with 'r\n' string it gets error.
Rik
Rik on 23 Mar 2019
Sorry, that was a typo. The repmat function call now creates a 2D array, instead of a vector, I'll edit my code to fix this.

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Products


Release

R2018b