Maximize Storage with Matlab Diary Function | Txt File Limit Solution"

  • Context: MATLAB 
  • Thread starter Thread starter jemma
  • Start date Start date
  • Tags Tags
    Function Matlab
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 4K views
jemma
Messages
35
Reaction score
0
I am using the diary function to store simulation results into a txt file, e.g.

diary('TextLog.txt')

however I expect to have around 50,000 rows of data and so not all my data will be stored. Is there anything I can do to specify the size of the file? Am I right in thinking the file will only hold what is displayed in the Command Window? If so, is there a way to change this? Unless there is a different command I can use? Thanks if you can help!
 
Physics news on Phys.org
Yes thanks, I've been trying to do this using fprintf.

With the example here: http://www.mathworks.com/help/techdoc/ref/fprintf.html

B = [8.8 7.7 ; ...
8800 7700];
fprintf('X is %4.2f meters or %8.3f mm\n', 9.9, 9900, B)
MATLAB displays:

X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm

What does the %4.2f and %8.3f do apart from rounding values to 2 and 3 decimal places respectively? i.e. what's the 4 and 8?
Thanks!
 
The 4 and 8 specify the width of the printed output. So, for %8.3f, if you has 12.345, it would print:
Code:
  12.345
and if you had 0.1236 it would print:
Code:
   0.124
padding with whitespace so that the column width is 8.

Try this code to see how that works:
Code:
number = 12.3456789;
for i=1:10;
    format = sprintf('%%%i.3f\n', i);
    fprintf(format, number);
end

It should produce:
Code:
12.346
12.346
12.346
12.346
12.346
12.346
 12.346
  12.346
   12.346
    12.346

MATLAB fprintf() documentation said:
  • Field width
Minimum number of characters to print. Can be a number, or an asterisk (*) to refer to an argument in the input list. For example, the input list ('%12d', intmax) is equivalent to ('%*d', 12, intmax).
 
Last edited: