I have a 100x1 vector A, and want to know the ten indices i for which A(i) are the greatest 10 values in A.(adsbygoogle = window.adsbygoogle || []).push({});

I can find the values by:

But I don't know how to find the indices, apart from starting a new if loop which searches the entire matrix (which seems very time consuming).Code (Text):

B = sort(A)

B(1:10);

As another example, I have a matrix B which is 10,000x2 and I want to know the value of B(i,1) for which B(i,2) is the maximum value in the column vector B(:,2). Eg.

However I think this is taking absolutely ages in my code (I need to find this 20bn times so it's definitely an area for optimisation). Is there a simpler way to find the indices?Code (Text):>> B = [(5:0.1:5.9)',rand(10,1)]

B =

5.000000000000000 0.696266337082995

5.100000000000000 0.093820026774866

5.200000000000000 0.525404403859336

5.300000000000000 0.530344218392863

5.400000000000000 0.861139811393332

5.500000000000000 0.484853333552102

5.600000000000001 0.393456361215266

5.700000000000000 0.671431139674026

5.800000000000001 0.741257943454206

5.900000000000000 0.520052467390387

>> for i = 1:10

if B(i,2) == max(B(:,2))

B(i,1)

end

end

ans =

5.400000000000000

**Physics Forums - The Fusion of Science and Community**

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Retrieving Indices of a vector whose elements fulfil a criteria

Loading...

Similar Threads - Retrieving Indices vector | Date |
---|---|

Mathematica Add a rectangle to a plot to indicate range | Jun 15, 2017 |

Library for retrieving notes? | Jun 17, 2013 |

Indicate mean with a bar in Matlab | Jun 21, 2012 |

[LaTeX] isotopes - how to align left indices? | May 2, 2012 |

How to loop on vector values and have indices too | Jun 27, 2011 |

**Physics Forums - The Fusion of Science and Community**