Question: Is there a command working exactly like [Matlab's `find`](http://www.mathworks.com/help/matlab/ref/find.html)?

I know that `Pick` might work, but I just want to give a logic condition to select the elements of a list instead of a particular value.

For instance:

```
T={a, b, c, d, e}
Ctl={2.3, 0, 5, 0, 0}

```

I'd like to pick the elements of `T` for which the corresponding element of `ctl` is greater than 0.

Answer: 
You use a `PositionIndex` with `KeySelect` for this, which is a good approach if you need to use multiple tests against the same array. 

```
In[1]:= T = {a, b, c, d, e}; 
        Ctl = {2.3, 0, 5, 0, 0};

In[2]:= index = PositionIndex[Ctl]
Out[2]= <|2.3 -> {1}, 0 -> {2, 4, 5}, 5 -> {3}|>

In[3]:= Extract[T, Values@KeySelect[index, Positive]]
Out[3]= {a, c}

```
Just for some ridiculousness (covering some of the give answers):

```
t = {a, b, c, d, e};
ctl = {2.3, 0, 5, 0, 0};

```

Various: 

```
Pick[t, Positive@ctl] (* JM*)
Extract[t, Position[ctl, _?Positive]] (* bill s *)
Cases[Transpose[{t, ctl}], {x_, _?Positive} :> x]
First /@ Select[Transpose[{t, ctl}], #[[2]] > 0 &]
Last@Reap[Sow @@@ (Transpose@{t, ctl}), _?Positive, Sequence @@ #2 &]
True /. GroupBy[Transpose[{t, ctl}], Positive[#[[2]]] & -> First]

```