MATLAB Answers

Output of changing number of columns

9 views (last 30 days)
Vlad Kaminski
Vlad Kaminski on 20 Apr 2015
Commented: Vlad Kaminski on 20 Apr 2015
Dear all, I'm running Matlab 2011a,
Here's the situation: I'm using the fprintf function to output the mat.structure into a file. I'm normally using something like
fprintf(out, '%14f %14f %14f %14f', array); this is true for 4 column format,
However in my "mat.structure(i)", the number of columns is changing with (i).
QUESTION: How can I specify a CHANGING format using fprintf? Is there a better function to suite my needs?
Thanks in advance!

Answers (2)

Niels on 20 Apr 2015
I believe a simple repmat should do the trick:
fprintf(out, repmat('%14f ',[1,size(array,2)]), array);

Stephen Cobeldick
Stephen Cobeldick on 20 Apr 2015
Edited: Stephen Cobeldick on 20 Apr 2015
Here are two ways that you can allow for a variable number of columns and also not introduce an extra space character before/after the text:
1. use repmat on the format string, and then shorten it:
>> A = 1:3;
>> fmt = repmat(' %2f',1,size(A,2));
>> fprintf(fmt(2:end),A)
1.000000 2.000000 3.000000>>
2. use two fprintf calls (if more than one column):
>> fprintf('%2f',A(1)), fprintf(' %2f',A(2:end))
1.000000 2.000000 3.000000>>
A naive repmat on the format string will produce a leading/trailing space character.

Community Treasure Hunt

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

Start Hunting!

Translated by