Can using cell arrays produce unexpected matrix dimension errors?

조회 수: 2 (최근 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 CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by