Error using * Too many input arguments.

3 views (last 30 days)
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.

Accepted Answer

Walter Roberson
Walter Roberson on 31 Dec 2013
Your "c" is a structure array, so c.Area is expanding to multiple arguments.
ratio = [c.Perimeter].^2 ./ (4 * pi * [c.Area]);
  2 Comments
saravanakumar D
saravanakumar D on 31 Dec 2013
Edited: saravanakumar D on 31 Dec 2013
It's working thank You.
Can you please tell me. why we use [] and .
Walter Roberson
Walter Roberson on 31 Dec 2013
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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!