フィルターのクリア

Can using cell arrays produce unexpected matrix dimension errors?

1 回表示 (過去 30 日間)
Brad
Brad 2014 年 1 月 7 日
コメント済み: Brad 2014 年 1 月 7 日
I'm attempting to write default data values to a text file using the following code;
Default_Cam_Data = {
'Cam ID:' 1 ;
'pad 6:' -1 ;
'SW ID:' 1 ;
'Position:' 0.0000000, 0.0000000, 0.0000000 ;
'Range:' 0.0 ;
'Cam Status:' -1 ;
'Tolerance Count:' 0 };
[nrows,ncols]= size(Default_Cam_Data);
filename = 'camera_data.txt';
fid = fopen(filename, 'w');
Total_Cams_Reporting = 3;
for m = 1:Total_Cams_Reporting
fprintf(fid, 'Observing Cameras Info (%d of %d)\n', m, Total_Cams_Reporting);
for row=1:nrows
fprintf(fid, '%s %d\n', Default_Cam_Data{row,:});
end
end
fclose(fid);
When I open the text file, I expect the data to be written like this;
Observing Cameras Info (1 of 3)
Cam ID: 1
pad 6: -1
SW ID: 1
Position: 0.0000000, 0.0000000, 0.0000000
Range: 0
Cam Status: -1
Tolerance Count: 0
Observing Cameras Info (2 of 3)
Cam ID: 1
pad 6: -1
SW ID: 1
Position: 0.0000000, 0.0000000, 0.0000000
Range: 0
Cam Status: -1
Tolerance Count: 0
Observing Cameras Info (3 of 3)
Cam ID: 1
pad 6: -1
SW ID: 1
Position: 0.0000000, 0.0000000, 0.0000000
Range: 0
Cam Status: -1
Tolerance Count: 0
However, I keep getting the following error:
Warning: File: Cam.m Line: 2 Column: 20
The expression on this line will generate an error when executed. The error will be: Error using vertcat Dimensions of matrices being concatenated are not consistent.
Error using Cam (line 1) Error using vertcat Dimensions of matrices being concatenated are not consistent.
I suspect the problem has something to do with the 3 default values for position since I can delete the last 2 occurences of 0.0000000, and I get this result: Position: 0
This is the first time I've seen this. Any ideas on what could be the source of this error?
  2 件のコメント
Matt J
Matt J 2014 年 1 月 7 日
編集済み: Matt J 2014 年 1 月 7 日
Warning: File: Cam.m Line: 29 Column: 20 ... Error using vertcat
Could you show us the code up through Line 29, in accordance with the warning? The code you've shown only has 21 lines. Furthermore, none of the lines you've shown contain a vertcat() operation.
Brad
Brad 2014 年 1 月 7 日
Matt, I just noticed this as well. I updated the original information to reflect the same result after I deleted all the comments proceeding the code.
The vertcat error has me completely confused. I'm not invoking that function anywhere in the code, but I'm getting an error?

サインインしてコメントする。

採用された回答

Sean de Wolski
Sean de Wolski 2014 年 1 月 7 日
編集済み: Sean de Wolski 2014 年 1 月 7 日
Hey Brad,
vertcat() is what is called when you use a ";" to vertically concatenate an array, e.g.:
x = [1; 3]
is equivalent to
x = vertcat(1,3)
What's happening with your file above is you have a bunch of 1x2 rows and then you try to concatenate them vertically with a 1x4 row.
'Cam ID:' 1 ;
'pad 6:' -1 ;
'SW ID:' 1 ;
'Position:' 0.0000000, 0.0000000, 0.0000000 ; % This guy has four elements
You'll need to either make the whole cell array an nx4 or figure out how to reduce those three 0.00000s to one, possible using a nested cell {0.00 0.00 0.00}
  2 件のコメント
Sean de Wolski
Sean de Wolski 2014 年 1 月 7 日
Ps. good well written question that should be an example for others! You gave us the full code, indented as code and the full warning!
Brad
Brad 2014 年 1 月 7 日
Thanks Sean. I've botched a few questions pretty good over the last year.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEnvironment and Settings についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by