Message Boards Message Boards

GROUPS:

A problem with functions Flatten; Position; Nearest

Posted 9 years ago
4170 Views
|
3 Replies
|
2 Total Likes
|

Hi all!
I'm trying to find nearest to "a" elements of arrays "m5","m6" and take its indexes (in this arrays) for some computations (not connected with this problem).
After some attempts, i find a solution:

Print[ " PosNear5= ", Flatten[Position[m5, Flatten[Nearest[m5, a]][[1]]], 3], " PosNear6= ", Flatten[Position[m6, Flatten[Nearest[m6, a]][[1]]]][[1]]] ]

the result is:

PosNear5= {121} PosNear6= 108

The second index is ok, but there is the question: Maybe, exist a more simple construction (in my variant - too many functions & brackets). (I want to see index without any figure brackets - for next step computations)...

3 Replies

Try something like this (using Daniel's suggestion):

nearestIndex[list_, a_] :=
  Nearest[list -> Range[Length[list]], a][[1]];

{pos5 -> nearestIndex[m5, a],
 pos6 -> nearestIndex[m6, a]}

To get the position(s) you can use Nearest[values->Range[Length[values], a]. That should allow you to avoid Position. No idea why Flatten is needed without seeing your actual example.

POSTED BY: Daniel Lichtblau
Posted 9 years ago

If you could edit your posting to include a small example with all the data, what the solution should be and why then it might be more likely that you would get good answers more quickly.

POSTED BY: Bill Simpson
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract