What does the operator "~=" mean?

529 vues (au cours des 30 derniers jours)
Linux
Linux le 26 Fév 2013
max2 = @(x) max(max(x));
immax = nlfilter(im, [siz siz], max2);
im(im ~= immax) = 0;
result = im;
This is the code take from a non-maximum suppression function. What does the 3rd line mean? Why can we use "something(something) = 0;" as a statement?
Thank you.
  1 commentaire
Image Analyst
Image Analyst le 26 Fév 2013
Why not just us imregionalmax()?

Connectez-vous pour commenter.

Réponse acceptée

Shashank Prasanna
Shashank Prasanna le 26 Fév 2013
something(somthing_else)=0; In MATLAB refers to logical indexing and assignment.
In this case somthing_else has to be logical (think boolean) and
im ~= immax
basically means values where those to are not equal will be true and the rest will be false. When that is followed by:
im(im ~= immax) = 0;
you are equating to zero all the values in im where the above condition is not satisfied.
you will find this information in the documentation under logical indexing.
  2 commentaires
Linux
Linux le 26 Fév 2013
Thank you very much.
Paul Metcalf
Paul Metcalf le 26 Fév 2013
Don't feel bad, ~= is one of the first real gotcha's in MATLAB and threw me for a while when I started out. For a long time, I read it as "approximately equal to" rather than "not equal to", quite a fundamental difference. I'm sure there's a big story somewhere about why it's not the standard !=...

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by