Error using fprintf for cells
조회 수: 2 (최근 30일)
이전 댓글 표시
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
채택된 답변
Cedric
2013년 7월 25일
편집: Cedric
2013년 7월 25일
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
Cedric
2013년 7월 25일
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?
추가 답변 (0개)
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!