I would suggest running under the debugger to
see what is actually being passed to xlinvals.

Also, take a look at the error message which
from looking at Basic.pm on line 245 suggests
that you are calling xlinvals() as a method on
a piddle with first dim length 0 or 1.

--Chris

On Tue, Sep 25, 2012 at 11:16 AM, Doug Hunt <[email protected]> wrote:
> Hi Daniel:  I would make sure that the attributes $drng, $rngN and $dtheta
> are scalars:
>
> my $dtheta = $nc->getatt( 'seasonde_Angular_Resolution',
> sprintf('seasonde_Header_%s',uc($self->{station_site})) )->sclr;
>
> --Doug
>
> [email protected]
> Software Engineer
> UCAR - COSMIC, Tel. (303) 497-2611
>
>
> On Tue, 25 Sep 2012, dpath2o wrote:
>
>> Hi,
>>
>> I've been chasing a new problem that appears to be somewhat sinister, but
>> could be relatively straight forward ... I'm turning
>> my wheels.
>>
>> Here's my code:
>>
>> 1   my $nc   = PDL::NetCDF->new( $ncfile );
>> 2   my $lon0 = $nc->getatt( 'seasonde_Origin_Longitude',
>> sprintf('seasonde_Header_%s',uc($self->{station_site})) );
>> 3   my $lat0 = $nc->getatt( 'seasonde_Origin_Latitude' ,
>> sprintf('seasonde_Header_%s',uc($self->{station_site})) );
>> 4   my $drng = $nc->getatt( 'seasonde_Range_Resolution',
>> sprintf('seasonde_Header_%s',uc($self->{station_site})) );
>> 5   my $rngN = $nc->getatt( 'seasonde_Range_Limit',
>> sprintf('seasonde_Header_%s',uc($self->{station_site})) ) * $drng;
>> 6   my $dtheta = $nc->getatt( 'seasonde_Angular_Resolution',
>> sprintf('seasonde_Header_%s',uc($self->{station_site})) );
>> 7   #my $thetas_degrees = zeroes(360/$dtheta)->xlinvals(0,(360-$dtheta));
>> 8   my $thetas_degrees = zeroes(360/5)->xlinvals(0,355);
>> 9   my $thetas = HFR::degrees2radians( $thetas_degrees );
>> 10  #my $rngs = zeroes($rngN/$drng)->xlinvals($drng,$rngN);
>> 11  my $rngs = zeroes(141237/3138.6)->xlinvals(3138.6,141237);
>> 12  my @rngdims = $rngs->dims;
>> 13  my @thetadims = $thetas->dims;
>> 14  for (my $l1=0;$l1<$rngdims[0];$l1++) {
>> 15    for (my $l2=0;$l2<$thetadims[0];$l2++) {
>> 16      $lonG = $lonG->append( ($rngs($l1)*cos($thetas($l2)))+$lon0 );
>> 17      $latG = $latG->append( ($rngs($l1)*sin($thetas($l2)))+$lat0 );
>> 18    }
>> 19  }
>>
>> Here's the error message when lines 7 and 10 are uncommented and lines 8
>> and 11 are commented.
>>
>> $ncfile
>> ='http://opendap-qcif.arcs.org.au/thredds/dodsC/IMOS/ACORN/radial/CRVT/2011/09/01/IMOS_ACORN_RV_20110901T000000Z_CRVT_FV00_radi
>> al.nc'
>>
>> HFR::degrees2radians is very straightforward as the name implies
>>
>> The error message that I get is:
>>
>> Must have at least two elements in dimension for xlinvals at
>>
>> /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/PDL/Basic.pm
>> line 245
>> PDL::xlinvals('PDL=SCALAR(0x7fb13b7f4bb8)', 'PDL=SCALAR(0x7fb13b7f4b40)',
>> 'PDL=SCALAR(0x7fb13b7f4b70)') called at
>> /opt/local/lib/perl5/site_perl/5.12.4/HFR/ACORN.pm line 368
>>
>> This implies that xlinvals is not getting the right input.  So when I
>> 'foce feed' xlinvals (as I've tested the code out on the
>> PDL command line and it works fine) it works fine too.  I'm stumped ...
>> any thoughts?  Could there be some conflict with PDL
>> operators and Perl operators?
>>
>> Here are the modules I've loaded into this package:
>> use 5.006;
>> use strict;
>> use warnings;
>> use Data::Dumper;
>> use Date::Parse;
>> use DateTime;
>> use Date::Calc qw ( :all );
>> use HFR;
>> use PDL;
>> use PDL::NiceSlice;
>> use PDL::Math;
>> use PDL::Char;
>> use PDL::NetCDF;
>> use PDL::Constants qw( PI );
>>
>> Cheers,
>> Dan
>>
>
> _______________________________________________
> 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

Reply via email to