Write data to text file
fprintf(fileID,formatSpec,A1,...,An) applies the formatSpec to all elements of arrays A1,...An in column order, and writes the data to a text file. fprintf uses the encoding scheme specified in the call to fopen.
Print multiple numeric values and literal text to the screen.
A1 = [9.9, 9900]; A2 = [8.8, 7.7 ; ... 8800, 7700]; formatSpec = 'X is %4.2f meters or %8.3f mm\n'; fprintf(formatSpec,A1,A2)
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
%4.2f in the formatSpec input specifies that the first value in each line of output is a floating-point number with a field width of four digits, including two digits after the decimal point. %8.3f in the formatSpec input specifies that the second value in each line of output is a floating-point number with a field width of eight digits, including three digits after the decimal point. \n is a control character that starts a new line.
Explicitly convert double-precision values with fractions to integer values.
a = [1.02, 3.04, 5.06]; fprintf('%d\n',round(a));
1 3 5
%d in the formatSpec input prints each value in the vector, round(a), as a signed integer. \n is a control character that starts a new line.
Write a short table of the exponential function to a text file called exp.txt.
x = 0:.1:1; A = [x; exp(x)]; fileID = fopen('exp.txt','w'); fprintf(fileID,'%6s %12s\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\n',A); fclose(fileID);
The first call to fprintf prints header text x and exp(x), and the second call prints the values from variable A.
If you plan to read the file with Microsoft® Notepad, use '\r\n' instead of '\n' to move to a new line. For example, replace the calls to fprintf with the following:
fprintf(fileID,'%6s %12s\r\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\r\n',A);
MATLAB® import functions, all UNIX® applications, and Microsoft Word and WordPad recognize '\n' as a newline indicator.
View the contents of the file with the type command.
x exp(x) 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183
Write data to a file and return the number of bytes written.
Write an array of data, A, to a file and get the number of bytes that fprintf writes.
A = magic(4); fileID = fopen('myfile.txt','w'); nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes = 96
The fprintf function wrote 96 bytes to the file.
Close the file.
View the contents of the file with the type command.
16 5 9 4 2 11 7 14 3 10 6 15 13 8 12 1
Display a hyperlink (The MathWorks Web Site) on the screen.
site = 'http://www.mathworks.com'; title = 'The MathWorks Web Site'; fprintf('<a href = "%s">%s</a>\n',site,title)
%s in the formatSpec input indicates that the values of the variables site and title, should be printed as strings.
File identifier, specified as one of the following:
A file identifier obtained from fopen.
1 for standard output (the screen).
2 for standard error.
Data Types: double
Format of the output fields, specified as a string.
The string can include a percent sign followed by a conversion character. The following table lists the available conversion characters and subtypes.
%d or %i
Base 8 (octal)
Base 16 (hexadecimal), lowercase letters a–f
Same as %x, uppercase letters A–F
Exponential notation, such as 3.141593e+00
Same as %e, but uppercase, such as 3.141593E+00
The more compact of %e or %f, with no trailing zeros
The more compact of %E or %f, with no trailing zeros
%bx or %bX
Double-precision hexadecimal, octal, or decimal value
%tx or %tX
Single-precision hexadecimal, octal, or decimal value
String of characters
The string can include optional operators, which appear in the following order (includes spaces for clarity):
Optional operators include:
Order for processing inputs. Use the syntax n$, where n represents the position of the value in the input list.
For example, '%3$s %2$s %1$s %2$s' prints inputs 'A', 'B', 'C' as follows: C B A B.
Left-justify. Example: %-5.2f
Print sign character (+) for positive values. Example: %+5.2f
Pad to field width with spaces before the value. Example: % 5.2f
Pad to field width with zeros. Example: %05.2f
Modify selected numeric conversions:
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).
For %f, %e, or %E:
Number of digits to the right of the decimal point.
For %g or %G
Number of significant digits.
Can be a number, or an asterisk (*) to refer to an argument in the input list. For example, the input list ('%6.4f', pi) is equivalent to ('%*.*f', 6, 4, pi).
The string can also include combinations of the following:
Literal text to print. To print a single quotation mark, include '' in formatSpec.
Control characters, including:
Character whose ASCII code is the hexadecimal number, N
Character whose ASCII code is the octal number, N
The following limitations apply to conversions:
Numeric conversions print only the real component of complex numbers.
If you specify a conversion that does not fit the data, such as a string conversion for a numeric value, MATLAB overrides the specified conversion, and uses %e.
If you apply a string conversion (%s) to integer values, MATLAB converts values that correspond to valid character codes to characters. For example, '%s' converts [65 66 67] to ABC.
Numeric or character arrays, specified as a scalar, vector, matrix, or multidimensional array.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
 Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Inc., 1988.
 ANSI specification X3.159-1989: "Programming Language C," ANSI, 1430 Broadway, New York, NY 10018.