What does the operator "~=" mean?

248 Ansichten (letzte 30 Tage)
Linux
Linux am 26 Feb. 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 Kommentar
Image Analyst
Image Analyst am 26 Feb. 2013
Why not just us imregionalmax()?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Shashank Prasanna
Shashank Prasanna am 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.
  2 Kommentare
Linux
Linux am 26 Feb. 2013
Thank you very much.
Paul Metcalf
Paul Metcalf am 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 !=...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by