I did that, thanks, what I am to compute is a sort of "density" at
binned z values.


Hernán


2009/6/30 Maggie X <[email protected]>:
> I don't know how "gross" an idea of distribution you are looking for, but
> the first thing I would do is
>
> points z, r
>
>
> GL,
> Maggie
>
> 2009/6/30 Hernán De Angelis <[email protected]>
>>
>> Dear PDL'ers,
>>
>> I am stuck with an apparently simple problem and hoped that someone in
>> this list might have a clue.
>>
>> I have approx. 130000 pairs of data, z and r,  which represent
>> observations of some function r  at some coordinate z.
>> A sample of the data looks like this:
>>
>> z      r
>>
>>  3311  311.817
>>  3346  249.333
>>  3238  353.368
>>  3279  367.020
>>  3347  324.405
>>  3448  274.632
>>  3161  310.469
>>  3204  358.739
>> ...... ......
>>
>> These observations come from a three dimensional space, and therefore
>> there exists more than one r value for each value of the coordinate z.
>> What I want to do is to estimate a gross distribution of r values
>> versus z. Simple as it seems I am having troubles to set up a PDL code
>> to compute it.
>>
>> My thought is: first compute bins (hist) of the z variable and then
>> find all r observations that fit within intervals (z - delta_z; z
>> +delta_z), over the whole range of z. Finally find the average,
>> maximum and distribution of r values over that interval.
>>
>> The idea was to create a 2D piddle where the rows are values of r and
>> the columns are the values of z bins. Then, by some suitable
>> transposing, obtain the r values using which and index. As I could not
>> make this work, I tried with the less fancy approach of doing a loop
>> with 1D piddles.  My (still not working) version of the solution is:
>>
>>
>> use PDL;
>> use PDL::NiceSlice;
>> use PDL::Graphics::PGPLOT;
>>
>> # read data into two piddles
>> my ($z,$r) = rcols ('data');
>>
>> # calculates bins of size 10 from $z values between minimum and maximum
>> my ($zv,$zfs) = hist($z, int (min $z), int (max $z), 10);
>>
>> # defines auxiliary variables
>> # lower limit of bin
>> my $zvl = $zv - 5;
>> # upper limit of bin
>> my $zvu = $zv + 5;
>>
>> # an empty piddle to allocate the aggregated observations
>> # its dimensions are those of the binned z values
>> my $ri = zeroes(nelem($zv));
>>
>> # a temporary piddle
>> # its dimensions are those of the original data
>> my $tmp = zeroes(nelem($z));
>>
>> # sets an index variable to 0
>> my $i = 0;
>>
>> # starts the loop
>> while ($i < nelem($zv)) {
>>
>> # finds the indexes of z elements that fit within the interval,
>> # captures the r values at the same locations and stores that in the temp
>> piddle
>> $tmp .= $r->index(which($z > $zvl($i)  |  $z < $zvu($i) ));
>>
>> # calculates some statistics
>> $ri($i) .= average ($tmp);
>>
>> $i++;
>> }
>>
>> # plots ...
>> points zv,$ri;
>>
>>
>> This doesn't work though and neither did its many sibling versions. I
>> am stuck and perplexed.
>>
>> Any hint will be appreciated!
>>
>>
>> Thanks!
>>
>>
>>
>> Hernán
>>
>>
>>
>>
>> --
>>
>> Hernán De Angelis
>> Linux user # 397217
>>
>> _______________________________________________
>> Perldl mailing list
>> [email protected]
>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>
>
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>
>



-- 

Hernán De Angelis
Linux user # 397217

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to