Clear Filters
Clear Filters

Not able to get fprintf to print all columns

2 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 ....
etc
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,:});
end
My issue is that I only get the first column written to the file, nothing else. So my file ends up like this:
date
date
date
date
...
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!
  2 Comments
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
Kevin on 2 May 2016
Seems like you have not defined the variable formatSpec.

Categories

Find more on Data Import and Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!