Error using * Too many input arguments.
8 次查看(过去 30 天)
显示 更早的评论
Error using * Too many input arguments.
Error in triangle (line 9) ratio=c.Perimeter^2/(4*pi*c.Area);
I am getting the above error,I have binary image of triange, so i want use perimeter area ratio to detect the shape, but unfortunately i get this error. I don't know why.
0 个评论
采纳的回答
Walter Roberson
2013-12-31
Your "c" is a structure array, so c.Area is expanding to multiple arguments.
ratio = [c.Perimeter].^2 ./ (4 * pi * [c.Area]);
2 个评论
Walter Roberson
2013-12-31
When you have a structure array "c", then c.Area is the same as if you had written out
c(1).Area, c(2).Area, c(3).Area, ... c(end).Area
all as individual arguments to the function. When you use [c.Area] then this becomes
[c(1).Area, c(2).Area, c(3).Area, ... c(end).Area]
and so becomes the vector containing all of the various c(K).Area values.
When you are using regionprops, you get a separate structure array entry for each region that regionprops finds. If you get back (say) 3 areas, then the areas will not be stored as [c.Area(1), c.Area(2), c.Area(3)] and are instead stored as c(1).Area(1), c(2).Area(1), c(3).Area(1) -- three separate vectors, not a vector with three entries. Using [c.Area] puts all the entries together into a single vector.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!