Can anyone help me in this code ?

3 visualizaciones (últimos 30 días)
L K
L K el 15 de Mzo. de 2017
Comentada: L K el 16 de Mzo. de 2017
%To Calculate the points which lie inside and outside Tolerance
[in,on] = inpolygon(real,imag,xch_larger,ych_larger);
p=numel(real(in))
%disp(in)
q=numel(real(on))
%disp(on)
r=numel(real(~in))
i want a msg to be displayed when r>=0
i have put this statement
if r >= 0;
msgbox('So-n-so','Detected Object','error');
else
msgbox('So-n-so','Detected Object');
end
But the problem i am facing is, even if the value is r<=0 Still it displays the first msg, it does not go in the else part... what is problem ?

Respuesta aceptada

Guillaume
Guillaume el 15 de Mzo. de 2017
Editada: Guillaume el 15 de Mzo. de 2017
I strongly suspect that you want the number of query points in, on and outside the polygon, which you'll never get with numel (See comment to Image Analyst's answer). I suspect this is what you want:
p = sum(in); %number of points inside or on the polygon
q = sum(on); %number of points on the polygon
r = sum(~in); %number of points outside the polygon
  3 comentarios
Guillaume
Guillaume el 15 de Mzo. de 2017
I've just noticed that real and imag are variable names, and not the functions real and imag. So yes, your code would work (but be slightly slower).
However, I would encourage you to rename these two variables to something that is not a standard matlab function. Not only would it avoid this sort of confusion, it would prevent potential bugs (where you try to use the function and ends up indexing into the variable instead).
L K
L K el 16 de Mzo. de 2017
Thanx for the valuable info :) I did the changes

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 15 de Mzo. de 2017
numel() returns the number of elements in an array. Why do you think that should EVER be negative?
  2 comentarios
L K
L K el 15 de Mzo. de 2017
Ok Ya i got my mistake... if was suppose to be r>0... and the other condition would be true when r=0... I just realized it..
Guillaume
Guillaume el 15 de Mzo. de 2017
Editada: Guillaume el 15 de Mzo. de 2017
And since in and on are logical arrays, all those real(something) are also completely pointless.
And since in and ~in obviously have the same numbers of elements, p and r will always be equal.
"and the other condition would be true when r=0"
And since the number of elements in in and on is the same as the number of elements in the input, the only way that r can be 0 is if you pass zero query points.
Really, the problem is not with the if but with everything that is before!

Iniciar sesión para comentar.

Categorías

Más información sobre Images en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by