How to save Matrix in text-file using format double?

60 views (last 30 days)
Holger
Holger on 2 Nov 2024 at 8:56
Commented: Umar on 5 Nov 2024 at 2:46
I like to save a matrix into a textfile.
save('name','matrix','-ascii') saves matrix in a format
1.93e3 1.32e-2
1.94e3 1.03e-3
but I need:
1930 0.0132
1940 0.00103
How to manage?

Answers (2)

Stephen23
Stephen23 on 2 Nov 2024 at 12:05
Using SAVE for text files is very outdated. The recommended approach is to e.g. WRITEMATRIX:
M = [1930,0.0132; 1940,0.00103];
writematrix(M,'mytest.txt')
Checking
type mytest.txt
1930,0.0132 1940,0.00103

Umar
Umar on 2 Nov 2024 at 14:14

Hi @Holger,

You can use the fprintf function instead of save. The fprintf function allows for greater control over the formatting of the output. For more guidance on this function, please refer to

https://www.mathworks.com/help/matlab/ref/fprintf.html

Here is how you can do it:

Prepare Your Matrix: Ensure that your matrix is defined in MATLAB.

   matrix = [1.93e3, 1.32e-2; 1.94e3, 1.03e-3];

Open a File for Writing: Use the fopen function to create or open a text file where you want to save your data.

   fileID = fopen('output.txt', 'w'); % Open file for writing

Format and Write Your Data: Use fprintf to write the data into the file in your desired format. You can specify the format string to ensure that numbers are represented as you wish (fixed-point).

   fprintf(fileID, '%.0f %.4f\n', matrix'); 
   % Transpose matrix for correct orientation

In this example:

%.0f formats the first column as an integer.
%.4f formats the second column with four decimal places.

Close the File: After writing, always close the file to ensure all data is saved properly.

   fclose(fileID);

Here is how your complete MATLAB code would look:

% Define your matrix
matrix = [1.93e3, 1.32e-2; 1.94e3, 1.03e-3];
% Open a text file for writing
fileID = fopen('output.txt', 'w');
% Write the matrix to the file in the desired format
fprintf(fileID, '%.0f %.4f\n', matrix');
% Close the file
fclose(fileID);

Please see attached.

Using fprintf gives you flexibility not only in formatting but also in controlling how many digits appear after the decimal point and whether numbers are displayed in fixed-point or scientific notation. By following these steps, you should be able to save your matrix in MATLAB exactly as you require!

Hope this helps.

  2 Comments
Holger
Holger on 4 Nov 2024 at 9:00
Hi @Umar
thanks a lot, that helps me!
best regards
Holger
Umar
Umar on 5 Nov 2024 at 2:46
Hi @Holger,
Thank you for your kind words. I am pleased to hear that the information provided was helpful to you. If you have any further questions or need additional assistance, please do not hesitate to reach out.

Sign in to comment.

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!