MATLAB Answers

Arman Kam
0

Writing a table into a text file

Asked by Arman Kam
on 15 Feb 2013

Hi

I am getting so dizzy, i wrote a code and i want to record a table named 'DI' into a text file. I follow the instructions that is given here http://www.mathworks.com/help/matlab/ref/fprintf.html , but unfortunately it writes something quite different from the original table. I doubted that the code is wrong so i used the example that is given in the above link in my code and it gives me totally right answers.

The code that i use for this text writing is

fileID=fopen('ParkAngDI11.txt','w+');
fprintf(fileID,'%6s %12s\r\n','Time','Damage Index');
fprintf(fileID,'%6.2f %12.8f\r\n',DI);
fclose(fileID);

I would be so thankful if you help me through this.

  2 Comments

What this table is containing?

The Table contains somee numbersd that is irrelevant with the original table that exists in matlab.

some the datas from original table is

 0.0100000000000000	0
 0.0200000000000000	0
 0.0300000000000000	0
 0.0400000000000000	0
 0.0500000000000000	0
 0.0600000000000000	0
 0.0700000000000000	0
 0.0800000000000000	0
 0.0900000000000000	0
 0.100000000000000	0

and it the first column continues to 39.98 and second column takes some values corresponding to column one.

the data that matlab writes for me is

Time Damage Index
0.01   0.02000000
0.03   0.04000000
0.05   0.06000000
0.07   0.08000000
0.09   0.10000000
0.11   0.12000000
0.13   0.14000000
0.15   0.16000000
     .
     .
     .
39.91  39.92000000
39.93  39.94000000
39.95  39.96000000
39.97  39.98000000
0.00   0.00000000
0.00   0.00000000
     .
     .
     .
0.00   0.00000000
0.00   0.00000000
0.00   0.00000000
0.00   0.00000000
-0.12  -0.12093101
-0.12  -0.12093101
-0.12  -0.12093101
-0.12  -0.12093101

i really need to write these tables to text file but i don't know what is wrong!!!

Products

No products are associated with this question.

1 Answer

Answer by per isakson
on 15 Feb 2013
Edited by per isakson
on 15 Feb 2013
 Accepted answer

My guess: column-wise. Change

    fprintf(fileID,'%6.2f %12.8f\r\n',DI);

to

    fprintf(fileID,'%6.2f %12.8f\r\n',transpose(DI));

  2 Comments

Thank you so much dear Per Isakson your solution worked, Can you tell me why is this happening?!

Column-wise is the key to understand why. fprintf reads column-wise from the input matrix and writes "row-wise" to the file controlled by the format specification. Remember: Matlab is "column-first-oriented". Try

    %%
    clc
    M = [ 11, 12; 21, 22 ]
    disp('-- fprintf --')
    fprintf( 1, '%4d,%4d\n', M ) 

result in the command window

    M =
        11    12
        21    22
    -- fprintf --
      11,  21
      12,  22
    >> 

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!