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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!