Error using fprintf for cells
3 views (last 30 days)
Show older comments
I am using following code to generate text file from array which has 1 matrix of 496 * 6 size with strings in it. I m getting 'Bad cell reference operation.' error
Code:
fileID = fopen('Gcode.txt','w');
fprintf(fileID,'%10s %10s %10s %10s %10s %10s \n', G_code{1,1}{:}, G_code{1,1} {:},G_code{1,1}{:},G_code{1,1}{:},G_code{1,1}{:},G_code{1,1}{:});
fclose(fileID);
Can anyone explain?
0 Comments
Accepted Answer
Cedric
on 25 Jul 2013
Edited: Cedric
on 25 Jul 2013
G_code{1,1}{:} is a comma separated list (CSL), which is not - I guess - what you thought it was. It is not possible to tell you what is wrong without knowing what you store in G_code and how you want it written in the file, but to illustrate, if G_code{1,1} where the cell array {'hello', 'world'}, the following line
fprintf('%s %s\n', G_code{1,1}{:}) ;
would be equivalent to
fprintf('%s %s\n', G_code{1,1}{1}, G_code{1,1}{2}) ;
or taking the content
fprintf('%s %s\n', 'hello', 'world') ;
So you see that {:} returns a list of cells' content separated by commas.
EDIT: as FPRINTF repeats its formatSpec until all its args are displayed, you can use CSL the following way: assume you want to have two columns in the output with the data
>> data = {'A1', 'A2'; 'B1', 'B2'} ;
you can specify a formatSpec with two column, and develop data as a CSL (but just once)
>> fprintf('%s %s\n', data{:}) ;
A1 B1
A2 B2
which is equivalent to
>> data_col = data(:) ;
>> fprintf('%s %s\n', data_col{1}, data_col{2}, data_col{3}, data_col{4}) ;
4 Comments
Cedric
on 25 Jul 2013
How did you define buffer? based on your initial code, I was assuming that G_code is a cell array, and that cell (1,1)'s content is again a cell array with the strings. However, I suspect that you made a mistake in the way you are addressing G_code's content .. how is it defined?
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!