MATLAB For Beginners: 20-Minute Video Training Course. (Grab The Training Course and The Cheat Sheet for FREE)

       

In this article, you’ll learn to generate text files from MATLAB using the MATLAB command fprintf. You’ll find out about:

  • The MATLAB fprintf Syntax
  • How to print a matrix in a text file
  • How to print complex numbers in a text file

MATLAB fprintf Syntax

How to use fprintf in MATLAB

In MATLAB, you can print text into a file by using the fprintf MATLAB command. To do this, go through the following 3 steps:

  1. Open a file using fopen.
  2. Write content using fprintf.
  3. Close the file using fclose.

For example, let’s write the word “Text” into a file named “textFileName.txt”:

fid = fopen('textFileName.txt', 'at');
fprintf(fid, 'Text');
fclose(fid);
  • fid: output of the fopen command, required to reference the file on which to write on (and to write on different files at once).
  • fopen(‘textFileName.txt’, ‘at’): open or create (if it doesn’t exist) a file named “textFileName.txt’
    • “a” is for appending data to the end of the file
    • “t” is for opening the file in text mode
  • fprintf(fid, ‘Text’): print the word ‘Text’ into the file referenced by the “fid” variable.
  • fclose(fid): close the file referenced by the “fid” variable.

If you run this piece of code in MATLAB, a file named ‘textFileName.txt’ will be created in your current folder:

Example of using the fprintf MATLAB command

Delete Existing Content When Writing

There are 2 ways to delete the content before writing when the file already exists:

  1. Either use the argument ‘w’ instead of ‘a’ in the fopen MATLAB command:
    fid = fopen('textFileName.txt', 'wt');
    fprintf(fid, 'Text');
    fclose(fid);
  2. Or, use the delete MATLAB command to delete the existing file before using fopen to create a new file with the same name:
    delete('textFileName.txt');
    fid = fopen('textFileName.txt', 'at');
    fprintf(fid, 'Text');
    fclose(fid);

If ‘textFileName.txt’ doesn’t exist, MATLAB will generate a warning; otherwise, it will delete the file before creating a new one with fopen.

Print Numbers in a Text File

You can format as follows:

delete('textFileName.txt');
fid = fopen('textFileName.txt', 'at');
fprintf(fid, ['%d + %d = %d'], 2, 3, 5);
fclose(fid);

Or, you can just use the num2str MATLAB command to convert your number into a text:

delete('textFileName.txt');
fid = fopen('textFileName.txt', 'at');
fprintf(fid, [num2str(2) '+' num2str(3) '=' num2str(5)]);
fclose(fid);

Warning: File not Found or Permission Denied

When you encounter a warning saying that the file cannot be overwritten, it could be because there have been some issues with closing the file the last time it was opened:

Warning delete MATLAB command

In this case, you can close it by using:

fclose all

After running this command you should be able to delete/overwrite the file.

MATLAB fprintf: Matrix

Let’s say we have a matrix:

m = \begin{pmatrix}1 & 2 & 3\\4 & 5 & 6\end{pmatrix}

It can be defined in MATLAB as follows:

m = [1 2 3 ; 4 5 6];

The intuitive way to write a matrix would be to use “%d” for each column of the matrix such as:

fid = fopen('textFileName.txt', 'at');
fprintf(fid, '%d %d %d\n', m);
fclose(fid);

However, because fprintf doesn’t store matrices in an intuitive way, in MATLAB you’d get:

fprintf matrix not working example

Instead, you need to use the transpose of that matrix:

fid = fopen('textFileName.txt', 'at');
fprintf(fid, '%d %d %d\n', m'); % notice the single quotation mark at the right of m
fclose(fid);

Now, you get:

working example of using fprintf to write a matrix

MATLAB fprintf: Complex Number

If you want to print complex numbers, there is no specific format, you need to separate the real from the imaginary part:

x = 1+3i;
fid = fopen('textFileName.txt', 'at');
fprintf(fid, '%d+%dj\n', real(x), imag(x));
fclose(fid);

Here’s what the text file will look like:

example of printing complexe numbers using the fprintf MATLAB command

Key takeaways:

  1. The basic structure to write text into a file is the following:
    fid = fopen(fileName, 'at'); % a is for append
    fprintf(fid, text);
    fclose(fid);
  2. To delete the content in the file before writing using the syntax:
    1. Use “w” as an argument of fopen:
      fid = fopen(fileName, 'wt'); % w is for write
      fprintf(fid, text);
      fclose(fid);
    2. Use the delete MATLAB command:
      delete(fileName);
      fid = fopen(fileName, 'at');
      fprintf(fid, text);
      fclose(fid);
  3. To print a matrix in MATLAB, you need to transpose the matrix:
    fid = fopen('textFileName.txt', 'at'); 
    fprintf(fid, '%d %d %d\n', m'); % notice the single quotation mark at the right of m 
    fclose(fid);
  4. To print a complex number in MATLAB, separate the real from the imaginary part:
    x = 1+3i; 
    fid = fopen('textFileName.txt', 'at'); 
    fprintf(fid, '%d+%dj\n', real(x), imag(x)) 
    fclose(fid);

To learn more about fprintf, check out the following links: