Error using fprintf for cells
3 ビュー (過去 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 で Low-Level File I/O についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!