use PDL::Version; print $PDL::Version::VERSION; #### my $z = zeros(10); print $z; #### use PDL::Core ':Internal' my $z = zeros(10); my $size = howbig($z->get_datatype) * $z->nelem; print $size; #### # To get top level PDL help perldoc PDL #### my $z = zeros(10); $z->slice(4) .= 1; print $z; #### my $z = zeros(10); $z(4) .= 1; print $z; #### my $z = 10 + sequence(40); print $z; #### my $z = sequence(10); $z = $z(-1:0); print $z; #### my $z = sequence(3,3); print $z; #### my $vec = pdl [1,2,0,0,4,0]; my $nz = $vec->which; print $nz; #### my $z = identity(3); print $z; #### my $z = random(3,3,3); print $z; #### my $z = random(10,10); print $z->min, $z->max; #### my $z = random(30); print $z->avg; #### my $z = ones(10,10); $z(1:8,1:8) .= 0; print $z; #### my $a = random(8,8); my $x = zeros(2 + $a->dim(0), 2 + $a->dim(1)); $x(1:8,1:8) .= $a; print $x; #### my $z = identity(5) * (1 + sequence(5)); $z->where($z > 4) .= 0; $z = $z->transpose->rotate(1)->transpose; print $z; #### my $z = zeros(8,8); $z("0::2","0::2") .= 1 $z("1::2","1::2") .= 1 print $z; #### my $z = random(6,7,8); my $hundreth = $z->clump($z->ndims)->(100); # TODO: find index of $hundreth in $z #### my $z = random(5,5); $z = (($z - $z->min) / ($z->max - $z->min)); print $z; #### my $x = ones(3,5); my $y = ones(2,3); print $x x $y; #### my $z = sequence(10); $z->where($z <= 8 & $z>= 3) *= -1; print $z; #### my $z = sequence(long, 10); $z ** $z; 2 << $z >> 2; $z <- $z; 1j * $z; $z / 1 / 1; $z < $z > $z; #### print pdl(0) / pdl(0); print pdl(0) // pdl(0); print float int pdl(NaN); #### $z = 20 * random(10) - 10; $z->where($z < 0) .= - $z->where($z < 0)->abs->ceil; $z->where($z > 0) .= $z->where($z > 0)->ceil; print $z; #### my $z1 = long 256 * random(10); my $z2 = long 256 * random(10); print intersect $z1, $z2; #### # No built in PDL time/date functions my $yesterday = time() - (60 * 60 * 24); my $today = time(); my $tomorrow = time() + (60 * 60 * 24); #### my $a = ones(3); my $b = 2 * ones(3); my $c = 3 * ones(3); print ($a + $b) * (- $a/2) #### my $z = 10 * random(10); print $z->ceil; print $z->floor; print byte $z; print long $z; print longlong $z; #### my $z = xvals zeros(5,5); print $z; #### my $z = (sequence(12) / 11)->slice("1:10"); print $z; #### my $z = random(10)->qsort; print $z; #### my $a = random(10); my $b = random(10); print $a == $b; #### use PDL::Complex; my $z = random(2,10); my $p = Cr2p($z); print $p; #### my $z = random(10); $z->where($z == $z->max) .= 0; print $z; #### # This cannot be done directly, but you can extract the underlying # C type used for each PDL type: print byte->realctype; print short->realctype; print ushort->realctype; print long->realctype; print longlong->realctype; print indx->realctype; print float->realctype; print double->realctype; #### # Set maximum print limit to one million elements $PDL::toolongtoprint = 1_000_000; $z = zeros(1000,1000); print $z; #### my $z = random(10,2); my ($x,$y) = ($z(:,0), $z(:,1)); my $d = (($x - $x->transpose)->ipow(2)) + (($y - $y->transpose)->ipow(2)); print $d; #### my $z = float 1000 * random(10); $z = long $z; #### 1,2,3,4,5 6,,,7,8 ,,9,10,11 #### my $z = rcols "data.csv", { COLSEP => ',' }, []; $z = $z->transpose; # optional (PDL is column major) print $z; #### my $z = grandom(10,10); # correct? print $z; #### my $p = 3; my $z = zeros(10,10); my $i = indx $z->nelem * random($p) $z->clump($z->ndims)->($i) .= 1; print $z; #### my $z = random(5, 10); $z = $z - $z->avgover->transpose; print $z; #### my ($w, $h) = (16, 16); my $i = byte 256 * random($w, $h, 3); my $uniqcol = $i->uniq->nelem; print $uniqcol; #### my $z1 = random(10, 10); my $z2 = random(10, 10); print $z1->inner($z2); #### my $z = pdl [1,2,3,4,5]; my $nz = 3; my $x = zeros($z->dim(0) * $nz); $x("0::$nz") .= $z; print $x; #### my $z1 = ones(5,5,3); my $z2 = 2 * ones(5,5); print $z1 * $z2; #### my $z = sequence(5,5); $z(0:1,) .= $z(1:0,)->sever; print $z; #### my $z = long 2 * random(10); $z = not $z; print $z; $z = -5 + sequence(10); $z = -1 * $z; print $z; #### $z = 10 * random(15); $len = 4; my @r = (); push @r, $z($_:$_ + $len-1) for (0 .. $z->nelem - $len) $r = pdl @r; print $r; #### my $z = 10 * random(10,10); my ($u, $s, $v) = $z->svd; my $rank = $s->where($s > 1e-10); print $rank; #### my $z = long 5 * random(10,10); my $dim = 3; my (@out, $out); for my $i ( 0 .. $z->dim(0) - $dim - 1) { for my $j ( 0 .. $z->dim(1) - $dim - 1) { push @out, $z($i:$i+$dim,$j:$j+$dim); } } $out = pdl @out; print $out; #### my $z = 10 * random(20); my $n = 3; print $z->qsort->(-$n:); #### my $z = random(5e7); $z ** 3; $z->ipow(3); $z->power(3,0); #### my $z = pdl [0,1,2,3,15,16,32,64,128]; my $bits = ($z->transpose & (2 ** xvals(9))); $bits->where($bits > 0) .= 1; print $bits; #### my $z = long 2 * random(3,6); print $z->uniqvec;