The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

# NAME

PDL::Apply - Apply a given function in "rolling" / "moving" / "over" manners

# SYNOPSIS

``````  use PDL;
use PDL::Apply ':all';

my \$x = pdl([40.7,81.7,28.9,33.3,40.8,16.3]);

print \$x->apply_rolling(3, 'sum');

print \$x->apply_over('sum');
# 241.7
print \$x->sumover;
# 241.7

my \$slices = indx([ [0, 2], [4, 5] ]);
print \$x->apply_slice(\$slices, 'sum');
# [151.3, 57.1]
# 151.3 = 40.7+81.7+28.9 (indices 0..2)
# 57.1  = 40.8+16.3 (indices 4..5)``````

# DESCRIPTION

This module allows you to:

• compute "rolling" functions (like `Moving Average`) with given sliding window

• compute "over" like functions (like `sumover`) with arbitrary function applied

But keep in mind that the speed is far far beyond the functions with C implementation like `sumover`.

# FUNCTIONS

By default, PDL::Apply doesn't import any function. You can import individual functions like this:

`` use PDL::Apply qw(apply_rolling apply_over);``

Or import all available functions:

`` use PDL::Apply ':all';``

## apply_over

`````` \$result = apply_over(\$pdl, \$func, @fargs);
#or
\$result = \$pdl->apply_over(\$func, @fargs);

# \$pdl    .. Input piddle, 1D or ND
# \$func   .. Function (PDL method) name as a string or code reference
# @fargs  .. Optional arguments passed to function``````

## apply_rolling

`````` \$result = apply_rolling(\$pdl, \$width, \$func, @fargs);
#or
\$result = \$pdl->apply_rolling(\$width, \$func, @fargs);

# \$pdl    .. Input piddle, 1D or ND
# \$width  .. Size of rolling window
# \$func   .. Function (PDL method) name as a string or code reference
# @fargs  .. Optional arguments passed to function``````

## apply_slice

`````` \$result = apply_slice(\$pdl, \$slices, \$func, @fargs);
#or
\$result = \$pdl->apply_slice(\$slices, \$func, @fargs);

# \$pdl    .. Input piddle, 1D or ND
# \$slices .. Piddle (2,N) with slices - [startidx, endidx] pairs
# \$func   .. Function (PDL method) name as a string or code reference
# @fargs  .. Optional arguments passed to function``````