Not able to get fprintf to print all columns

5 views (last 30 days)
Hello, I am having trouble writing my data to a .dat file. I have data with a set number of columns (512) plus the header for a total of 513. The number of data rows depends on how much data I take. So, my data will look like this:
date 17.53 18.93 100.0 ....
date 36.2 255.2 255.1 ....
My goal is to write each row to the file, one set at a time using the for loop. The code for that is below:
%writes output radiance file (dat file)
[file, dir] = uiputfile('*.dat', 'Save Radiance File:');
fid05 = fopen([dir file], 'wt+');
header = ['lambda', strcat(dates, {' '}, times)].';
results = num2cell([lambda.'; cell2mat(radiance).']);
fullData = [header, results];
[nrows,ncols] = size(fullData);
for row = 1:nrows
fprintf(fid05,formatSpec, fullData{row,:});
My issue is that I only get the first column written to the file, nothing else. So my file ends up like this:
no data next to the date. Would you happen to know why this is and what direction I should look to fix the issue. Thank you for all your help!
Oscar Hernandez
Oscar Hernandez on 2 May 2016
I see where that would be the issue. Originally, I did not have the format spec variable, and that was where I was getting the single column write only. Now, my format spec should be %s %f %f.... the issue is that I have 512 floating point values. Am I required to write all these out, or is there another way to format? Thank you for your answers

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 2 May 2016
fmtSpec = ['%s ', repmat('%f ', 1, 511), '%f\n'];

More Answers (1)

Kevin on 2 May 2016
Seems like you have not defined the variable formatSpec.

Community Treasure Hunt

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

Start Hunting!