1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Matlab Issue with aligning text in table format in .txt file

  1. Dec 19, 2014 #1
    1. The problem statement, all variables and given/known data
    uData is a 30x5 matrix with numbers. name_Database is a 30x1 cell array with strings of Names (e.g. Fake Subject 1, Fake Subject 2, Bob). What would fix the code so that the data aligns? (please see image for the misalignment).

    2. Relevant equations

    3. The attempt at a solution

    Code (Text):

    ID = dbedit.uData(:,1);
    scE = dbedit.uData(:,2);
    ccE = dbedit.uData(:,3);
    scC = dbedit.uData(:,4);
    ccC = dbedit.uData(:,5);
    names = dbedit.name_Database;
    % Text file to output data into is called uDatabase.txt file.
    output_file = 'uDatabase.txt';
    % Open file for writing
    fid = fopen(output_file, 'w+');
    % Header
    fprintf(fid, '%6s %12s %18s %24s %30s %36s\n', 'Name', 'ID', 'scE',...
        'ccE', 'scC', 'ccC');
    % Write the data.
    for ii=1:numel(names)
        fprintf(fid, '%6s %12.0f %18.0f %24.0f %30.0f %36.0f\n',names{ii},...
    % Close the .txt file.
  2. jcsd
  3. Dec 19, 2014 #2


    Staff: Mentor

    It looks to me like most of the data you are printing to the file is integer data, so I would be using %d conversion specifiers in place of the %f conversion specifiers you are using.

    Also, I think you have a misconception about what the number in a conversion specifier such as %18.0f does. This does NOT start printing in column 18. What it does is print the floating point number in a field of width 18, with no digits to the right of the decimal point. Because your conversion specifiers are %6s %12s %18s and so on, you get ever increasing spacing between subsequent numbers. The link below discusses how to use conversion specifiers to format strings or number sent to the screen or to a file.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted