Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Perl Misc (http://www.velocityreviews.com/forums/f67-perl-misc.html)
-   -   2D array of real numbers (http://www.velocityreviews.com/forums/t904405-2d-array-of-real-numbers.html)

 jeanluc 08-29-2007 01:48 PM

2D array of real numbers

I want to create a 2D array whose values initially contains 0.0

>From "http://www.xav.com/perl/lib/Pod/perllol.html"

I see that the following code will set up a 3x2 2D array:

@2D_array = (
[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
);

The above works fine but unfortunately I might have to make some large
arrays of arbitrary size. Doing it manually like above is not
possible.

I want to use the variables

\$no_rows = 50;
\$no_columns = 63;

To define a 50x63 2D arbitrary array filled with 0.0.

Anybody know how to do this?

Thanks!

 Peter Makholm 08-29-2007 01:51 PM

Re: 2D array of real numbers

jeanluc <jeanluc_picard_66@hotmail.com> writes:

> I want to use the variables
>
> \$no_rows = 50;
> \$no_columns = 63;
>
> To define a 50x63 2D arbitrary array filled with 0.0.
>
> Anybody know how to do this

The x operator would be usefull for this.

perl -MData::Dumper -le '\$a = [ (0.0) x 10 ]; print Dumper \$a'

//Makholm

 Mirco Wahab 08-29-2007 02:22 PM

Re: 2D array of real numbers

jeanluc wrote:
> I want to create a 2D array whose values initially contains 0.0
> To define a 50x63 2D arbitrary array filled with 0.0.
>
> Anybody know how to do this?

...
use constant NROW => 50; # set number of rows
use constant NCOL => 63; # set number of columns

my @Arr2D =
map [ ( 0.0 ) x NCOL ], # generate single ROW of NCOL COLUMNS
1 .. NROW; # NROW ROWS

print map "@\$_\n", @Arr2D;
...

Regards

M.

 jeanluc 08-29-2007 06:33 PM

Re: 2D array of real numbers

Works great!

Thanks!!

 John W. Krahn 08-30-2007 01:20 AM

Re: 2D array of real numbers

Petr Vileta wrote:
> jeanluc wrote:
>> I want to create a 2D array whose values initially contains 0.0
>>
>>> From "http://www.xav.com/perl/lib/Pod/perllol.html"

>>
>> I see that the following code will set up a 3x2 2D array:
>>
>> @2D_array = (
>> [0.0, 0.0, 0.0],
>> [0.0, 0.0, 0.0],
>> );
>>
>> The above works fine but unfortunately I might have to make some large
>> arrays of arbitrary size. Doing it manually like above is not
>> possible.
>>
>> I want to use the variables
>>
>> \$no_rows = 50;
>> \$no_columns = 63;

>
> my \$no_rows = 50;
> my \$no_columns = 63;
> my @row=(0.0)x\$no_columns;
> my @array=([@row])x\$no_rows;

You are making \$no_rows copies of the *same* anonymous array so any change to
\$array[0] will also show up in \$array[1] and \$array[2] and \$array[3] and etc.

> But you must address element as \$array[row]->[col] instead of
> \$array[row][col].

Because you said so? I don't think so.

John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order. -- Larry Wall

 Tad McClellan 08-30-2007 10:50 AM

Re: 2D array of real numbers

Petr Vileta <stoupa@practisoft.cz> wrote:

> But you must address element as \$array[row]->[col] instead of
> \$array[row][col].

No you don't.

Both forms are equivalent.

--
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"

 Anno Siegel 08-30-2007 08:23 PM

Re: 2D array of real numbers

On 2007-08-30 16:44:57 +0200, "Petr Vileta" <stoupa@practisoft.cz> said:

[ \$array[ \$i]->[ \$k] vs. \$array[ \$i][ \$k] ]

> Right too. I remember that in some case \$array[row][col] generate error
> at runtime, some like "\$array[row][col] is not allowed while use strict
> refs", but I forgot details and context.

No, there is no such runtime error. An arrow (->) that appears in the
middle of a pair of
closing and opening parentheses (of any kind) can be dropped without a
change in meaning.

Anno

 All times are GMT. The time now is 12:45 PM.