This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Write data to binary file


count = fwrite(___)



fwrite(fileID,A) write the elements of array A as 8-bit unsigned integers to a binary file in column order. The binary file is indicated by the file identifier, fileID. Use fopen to open the file and obtain the fileID value. When you finish reading, close the file by calling fclose(fileID).


fwrite(fileID,A,precision) writes the values in A in the form and size described by precision.

fwrite(fileID,A,precision,skip) skips the number of bytes or bits specified by skip before writing each value.


fwrite(fileID,A,precision,skip,machinefmt) additionally specifies the order for writing bytes or bits to the file. The skip argument is optional.

count = fwrite(___) returns the number of elements of A that fwrite successfully writes to the file. You can use this syntax with any of the input arguments of the previous syntaxes.


collapse all

Open a file named nine.bin for writing. Specify write access using 'w' in the call to fopen.

fileID = fopen('nine.bin','w');

fopen returns a file identifier, fileID.

Write the integers from 1 to 9 as 8-bit unsigned integers.


Close the file.


Open a file named magic5.bin for writing.

fileID = fopen('magic5.bin','w');

Write the 25 elements of the 5-by-5 magic square. Use the precision argument, 'integer*4', to write 4-byte integers.


Close the file.


Write a binary file containing the elements of the 4-by-4 magic square, stored as double-precision floating-point numbers.

fileID = fopen('magic4.bin','w');

Open the file, magic4.bin, with write-access that enables appending to the file. Specify the file-access type, 'a', in the call to fopen.

fileID = fopen('magic4.bin','a');

Append a 4-by-4 matrix of zeros to the file. Then, close the file.


Write random double-precision numbers to a file named myfile.bin for use on a big-endian system. Specify a machinefmt value of 'ieee-be' in the call to fwrite, to indicate big-endian byte ordering.

fileID = fopen('myfile.bin','w');

Input Arguments

collapse all

File identifier, specified as an integer obtained from fopen, 1 for standard output (the screen), or 2 for standard error.

Data to write, specified as a numeric, character, or string array.

Example: [1,2,3;4,5,6]

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string
Complex Number Support: Yes

Class and size in bits of the values to write, specified as one of the character vectors or string scalars listed in the Precision column.

Value TypePrecisionBits (Bytes)

Integers, unsigned


32 (4)


8 (1)


16 (2)


32 (4)


64 (8)


8 (1)

'unsigned char'

8 (1)


16 (2)


32 (4)



Integers, signed


32 (4)


8 (1)


16 (2)


32 (4)


64 (8)


8 (1)


16 (2)


32 (4)


64 (8)


8 (1)

'signed char'

8 (1)


16 (2)


32 (4)



Floating-point numbers


32 (4)


64 (8)


32 (4)


32 (4)


64 (8)


32 (4)


64 (8)



8 (1)


Depends on the encoding scheme associated with the file. Set encoding with fopen.

If you specify a precision of bitn or ubitn, then fwrite saturates for all values outside the range.


To preserve NaN and Inf values in MATLAB®, read and write data of class double or single.

Number of bytes to skip before writing each value, specified as a scalar. If you specify a precision of bitn or ubitn, specify skip in bits.

Use the skip argument to insert data into noncontiguous fields in fixed-length records.

Order for writing bytes within the file, specified as one of the character vectors or string scalars in the table that follows. For bitn and ubitn precisions, machinefmt specifies the order for writing bits within a byte, but the order for writing bytes remains your system byte ordering.

'n' or 'native'

Your system byte ordering (default)

'b' or 'ieee-be'

Big-endian ordering

'l' or 'ieee-le'

Little-endian ordering

's' or 'ieee-be.l64'

Big-endian ordering, 64-bit long data type

'a' or 'ieee-le.l64'

Little-endian ordering, 64-bit long data type

By default, all currently supported platforms use little-endian ordering for new files. Existing binary files can use either big-endian or little-endian ordering.

Extended Capabilities

Introduced before R2006a

Was this topic helpful?