MATLAB Answers

What does the operator "~=" mean?

488 views (last 30 days)
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 Comment
Image Analyst
Image Analyst on 26 Feb 2013
Why not just us imregionalmax()?

Sign in to comment.

Accepted Answer

Shashank Prasanna
Shashank Prasanna on 26 Feb 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.
Paul Metcalf
Paul Metcalf on 26 Feb 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 !=...

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!