Quantcast
Channel: MATLAB Central Newsreader Recent Posts
Viewing all articles
Browse latest Browse all 19628

Re: sorting, ranking

$
0
0
Dear all,

Here is a one-liner for getting ranks with ties:
[~,rank_vector]=ismember(data_vector,unique(sort(data_vector)));


Nir



"Steven Lord" <slord@mathworks.com> wrote in message <h6mu08$aua$1@fred.mathworks.com>...
>
> "Wyatt " <hello@hello.com> wrote in message
> news:h6moqe$sqf$1@fred.mathworks.com...
> > that did the trick steve. It just seems to me that
> >
> > rank = temp(I)
> >
> > should be valid syntax,
>
> It is. It just doesn't do what you expect it to do.
>
> > and is more intuitive than writing
> >
> > rank(I) = temp
>
> Why do you say that? "rank = temp(I)" is a valid MATLAB command in this
> scenario, but so is "rank = I.^2" or "rank = sin(cos(tan(I)))". Each of
> those commands do something different; for the application you described in
> your original post, the command that does what you want is "rank(I) = temp".
>
> Although you probably shouldn't use rank as a variable name, unless you're
> okay with not being able to use the RANK function in the same piece of code.
>
> > perhaps because I'm thinking that if I wanted to arbitrarily pull out
> > values [7 4 9 1] from a vector A I would write
> >
> > A([7 4 9 1])
> >
> > and it would give me the 7th 4th 9th and 1st values from A in that order.
>
> Yes. And if you wanted to store 1:4 into the 7th, 4th, 9th, and 1st
> elements of A, you'd use:
>
> A([7 4 9 1]) = (1:4);
>
> Just because one command works does not necessarily rule out a modification
> of that command also working and doing something slightly different.
>
> --
> Steve Lord
> slord@mathworks.com
>

Viewing all articles
Browse latest Browse all 19628

Trending Articles