Thanks Chris and Derek for the optimized method

For unique I was going to use squaretotri() and then sort it
The rle had went out of my mind...

I have a doubt, is it efficient to use the qsort method in large matrix (
say 5000 x 5000)


On Sat, Oct 18, 2014 at 11:21 PM, Chris Marshall <devel.chm...@gmail.com>
wrote:

> Nice, Derek!  Good catch (it is pretty cool to
> see how powerful a few lines of PDL can be).
>
> --Chris
>
> On Fri, Oct 17, 2014 at 3:19 PM, Derek Lamb <de...@boulder.swri.edu>
> wrote:
>
>> Ronak,
>>
>> If you are looking for the smallest 3 unique values, and those are "d",
>> "e", and "f", do you want all of the locations where your piddle is "d" or
>> "e" or "f" ?  Or if "d" is the smallest, just 3 "d" locations?  If the
>> latter, then what Chris has will work as-is.  If the former, then you need
>> a little bit extra at the beginning:
>>
>> $matrix =
>> pdl([0,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]);
>> $k = 3;
>> ($quant,$uniq_vals)=$matrix->flat->qsort->rle; #I am a big fan of
>> ->qsort->rle. ->hist() might work too.
>> $num_in_matrix = $quant(0:$k-1)->sum;
>> #then Chris's stuff will work
>> $smallest_k = zeroes(indx, $num_in_matrix);
>> $matrix->flat->minimum_n_ind($smallest_k); #answer gets stuffed into
>> $smallest_k
>> $coords2D = pdl($matrix->one2nd($smallest_k));
>> $smallest_vals = $matrix->range($coords2D->transpose)->flat;
>>
>> cheers,
>> Derek
>>
>> On Oct 17, 2014, at 10:29 AM, Chris Marshall <devel.chm...@gmail.com>
>> wrote:
>>
>> Hi-
>>
>> First off, you can use the PDL on-line documentation to
>> find relevant commands to try:
>>
>>   pdldoc -a maximum
>>
>> or
>>
>>   pdl> apropos maximum
>>
>> in the pdl2 or perldl shells includes the following items:
>>
>>    maximum             Project via maximum to N-1 dimensions
>>    maximum_ind       Like maximum but returns the index rather than the
>> value
>>    maximum_n_ind   Returns the index of `m' maximum elements
>>
>> where maximum_n_ind is what you are looking for.  Here is a
>> sample pdl2 session showing the calculation.  You can use
>> the PDL shells and the online documentation to understand
>> fully how it works:
>>
>>
>> pdl> floor(random(10,10)*10)
>>> pdl> p $m
>>> [
>>>  [4 7 5 0 6 7 8 4 6 7]
>>>  [0 7 0 2 5 3 0 4 6 6]
>>>  [5 4 3 6 9 5 8 4 4 1]
>>>  [9 6 7 7 4 1 4 2 0 8]
>>>  [5 1 3 3 7 7 1 2 8 5]
>>>  [2 0 8 7 3 1 5 7 7 6]
>>>  [5 9 6 2 7 2 6 7 0 2]
>>>  [6 3 1 1 8 2 1 9 9 9]
>>>  [6 7 9 3 5 2 2 5 9 3]
>>>  [4 5 0 4 7 9 3 3 1 6]
>>> ]
>>>
>>> pdl> $top5 = zeros indx, 5;   # size of $top5 determines n
>>> pdl> $m->flat->maximum_n_ind($top5)  # get top 5 element indexes
>>> pdl> p pdl($m->one2nd($top5))              # convert linear to ND index
>>> [
>>>  [4 0 1 7 8]
>>>  [2 3 6 7 7]
>>> ]
>>>
>>>
>>>
>> Hope this helps,
>> Chris
>>
>>
>> On Fri, Oct 17, 2014 at 11:54 AM, Ronak Agrawal <ronagra...@gmail.com>
>> wrote:
>>
>>> First I would Thank You for your constant help...it has helped me a lot
>>> in improving my skills
>>> -------
>>>
>>> I have generated a Hankel Matrix by the following operation
>>>
>>> // $a is a svd and therby this operation will always form Hankel Matrix
>>> $matrix = $a x transpose($a);
>>>
>>>  [image: [a b c d e; b c d e f; c d e f g; d e f g h; e f g h i].]
>>>
>>> I need to find the top K minimum elements ( 2D) with their 2 Dimesional
>>> indices ..
>>> Can you suggest me some good approach for this
>>>
>>> I though to do following but it is not optimized
>>> Converting the Lower triangular Matrix as Bad Values or 0
>>> Then Finding the mimimum row_wise and column_wise using minimum function
>>>
>>> Thanks
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Perldl mailing list
>>> Perldl@jach.hawaii.edu
>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>>
>>>
>> _______________________________________________
>> Perldl mailing list
>> Perldl@jach.hawaii.edu
>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>
>>
>>
>> _______________________________________________
>> Perldl mailing list
>> Perldl@jach.hawaii.edu
>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>
>>
>
_______________________________________________
Perldl mailing list
Perldl@jach.hawaii.edu
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to