David Mertens wrote:
On Mon, Nov 16, 2009 at 4:51 PM, Kartik Thakore <thakore.kar...@gmail.com <mailto:thakore.kar...@gmail.com>> wrote:

    How do I update this?  like animation?

    while(1)
    {

      $pdl_memory->get_dataref();

    }


Yeah, you know, I used a terrible variable name for that piddle. Let's try this: --------%<--------

use PDL;
use PDL::NiceSlice;

# Allocate a 10x10 array for rgb. I think that only the zeroes function # allows you to declare a piddle with a specific data type


perldl> ?sequence
Module  PDL::Basic
  sequence
    Create array filled with a sequence of values

     $a = sequence($b); $a = sequence [OPTIONAL TYPE], @dims;

    etc. see zeroes.

     perldl> p sequence(10)
     [0 1 2 3 4 5 6 7 8 9]
     perldl> p sequence(3,4)
     [
      [ 0  1  2]
      [ 3  4  5]
      [ 6  7  8]
      [ 9 10 11]
     ]

    Docs from /c/site/perl/lib_pdl/cygwin-thread-multi-64int/PDL/Basic.pm

So you can do:

perldl> $a = sequence(byte, 3, 10, 10);

perldl> p $a->info
PDL: Byte D [3,10,10]

> my $pdl = zeroes(byte, 3, 10, 10);
# Set values. Use in place to be sure we don't get another allocation, which may be the wrong type. # Note that the sequence wraps back to zero after hitting 256, because they're bytes!
$pdl->inplace->sequence;

# Now for a really silly animation - turn all the pixels white
for (my $i = 0; $i < 300; $i++) {
  $pdl()->clump(-1)->($i) = 255;
  # Do something with piddle data here.
}

--------%<--------

Is that a bit clearer?  Does anybody have a better sample?

You could use the PDL life example of threading that Matt posted
earlier today.  Just make an empty $sdl piddle with dims [3,N,M],
a $life piddle with shape [N,M] for the life updates, init $life,
then copy each update from the $life to the $sdl, maybe like:

$sdl .= $life(*3);

Reply via email to