annotate scripts/signal/movfun.m @ 30893:e1788b1a315f

maint: Use "fcn" as preferred abbreviation for "function" in m-files. * accumarray.m, accumdim.m, quadl.m, quadv.m, randi.m, structfun.m, __is_function__.m, uigetfile.m, uimenu.m, uiputfile.m, doc_cache_create.m, colorspace_conversion_input_check.m, imageIO.m, argnames.m, vectorize.m, vectorize.m, normest1.m, inputname.m, nthargout.m, display_info_file.m, decic.m, ode15i.m, ode15s.m, ode23.m, ode23s.m, ode45.m, odeset.m, check_default_input.m, integrate_adaptive.m, ode_event_handler.m, runge_kutta_23.m, runge_kutta_23s.m, runge_kutta_45_dorpri.m, runge_kutta_interpolate.m, starting_stepsize.m, __all_opts__.m, fminbnd.m, fminsearch.m, fminunc.m, fsolve.m, fzero.m, sqp.m, fplot.m, plotyy.m, __bar__.m, __ezplot__.m, flat_entry.html, profexport.m, movfun.m, bicg.m, bicgstab.m, cgs.m, eigs.m, gmres.m, pcg.m, __alltohandles__.m, __sprand__.m, qmr.m, tfqmr.m, dump_demos.m: Replace "func", "fun", "fn" in documentation and variable names with "fcn".
author Rik <rik@octave.org>
date Mon, 04 Apr 2022 18:14:56 -0700
parents 796f54d4ddbf
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30379
diff changeset
3 ## Copyright (C) 2018-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
7 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
8 ## This file is part of Octave.
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
9 ##
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
11 ## under the terms of the GNU General Public License as published by
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
13 ## (at your option) any later version.
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
14 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
18 ## GNU General Public License for more details.
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
19 ##
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
25
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
26 ## -*- texinfo -*-
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
27 ## @deftypefn {} {@var{y} =} movfun (@var{fcn}, @var{x}, @var{wlen})
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
28 ## @deftypefnx {} {@var{y} =} movfun (@var{fcn}, @var{x}, @var{[@var{nb}, @var{na}}])
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
29 ## @deftypefnx {} {@var{y} =} movfun (@dots{}, "@var{property}", @var{value})
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
30 ##
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
31 ## Apply function @var{fcn} to a moving window of length @var{wlen} on data
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
32 ## @var{x}.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
33 ##
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
34 ## If @var{wlen} is a scalar, the function @var{fcn} is applied to a moving
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
35 ## window of length @var{wlen}. When @var{wlen} is an odd number the window is
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
36 ## symmetric and includes @w{@code{(@var{wlen} - 1) / 2}} elements on either
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
37 ## side of the central element. For example, when calculating the output at
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
38 ## index 5 with a window length of 3, @code{movfun} uses data elements
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
39 ## @w{@code{[4, 5, 6]}}. If @var{wlen} is an even number, the window is
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
40 ## asymmetric and has @w{@code{@var{wlen}/2}} elements to the left of the
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
41 ## central element and @w{@code{@var{wlen}/2 - 1}} elements to the right of the
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
42 ## central element. For example, when calculating the output at index 5 with a
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
43 ## window length of 4, @code{movfun} uses data elements
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
44 ## @w{@code{[3, 4, 5, 6]}}.
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
45 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
46 ## If @var{wlen} is an array with two elements @w{@code{[@var{nb}, @var{na}]}},
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
47 ## the function is applied to a moving window @code{-@var{nb}:@var{na}}. This
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
48 ## window includes @var{nb} number of elements @emph{before} the current
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
49 ## element and @var{na} number of elements @emph{after} the current element.
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
50 ## The current element is always included. For example, given
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
51 ## @w{@code{@var{wlen} = [3, 0]}}, the data used to calculate index 5 is
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
52 ## @w{@code{[2, 3, 4, 5]}}.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
53 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
54 ## During calculations the data input @var{x} is reshaped into a 2-dimensional
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
55 ## @var{wlen}-by-@var{N} matrix and @var{fcn} is called on this new matrix.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
56 ## Therefore, @var{fcn} must accept an array input argument and apply the
26255
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
57 ## computation along dimension 1, i.e., down the columns of the array.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
58 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
59 ## When applied to an array (possibly multi-dimensional) with @var{n} columns,
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
60 ## @var{fcn} may return a result in either of two formats: @w{Format 1)}
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
61 ## an array of size 1-by-@var{n}-by-@var{dim3}-by-@dots{}-by-@var{dimN}. This
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
62 ## is the typical output format from Octave core functions. Type
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
63 ## @code{demo ("movfun", 5)} for an example of this use case.
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
64 ## @w{Format 2)} a row vector of length
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
65 ## @code{@var{n} * @var{numel_higher_dims}} where @var{numel_higher_dims} is
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
66 ## @w{@code{prod (size (@var{x})(3:end))}}. The output of @var{fcn} for the
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
67 ## i-th input column must be found in the output at indices
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
68 ## @w{@code{i:@var{n}:(@var{n}*@var{numel_higher_dims})}}.
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
69 ## This format is useful when concatenating functions into arrays, or when
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
70 ## using @code{nthargout}. Type @code{demo ("movfun", 6)} for an example of
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
71 ## this case.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
72 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
73 ## The calculation can be controlled by specifying @var{property}/@var{value}
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
74 ## pairs. Valid properties are
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
75 ##
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
76 ## @table @asis
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
77 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
78 ## @item @qcode{"dim"}
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
79 ## Operate along the dimension specified, rather than the default of the first
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
80 ## non-singleton dimension.
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
81 ##
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
82 ## @item @qcode{"Endpoints"}
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
83 ##
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
84 ## This property controls how results are calculated at the boundaries
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
85 ## (@w{endpoints}) of the window. Possible values are:
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
86 ##
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
87 ## @table @asis
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
88 ## @item @qcode{"shrink"} (default)
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
89 ## The window is truncated at the beginning and end of the array to exclude
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
90 ## elements for which there is no source data. For example, with a window of
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
91 ## length 3, @code{@var{y}(1) = @var{fcn} (@var{x}(1:2))}, and
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
92 ## @code{@var{y}(end) = @var{fcn} (@var{x}(end-1:end))}.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
93 ##
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
94 ## @item @qcode{"discard"}
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
95 ## Any @var{y} values that use a window extending beyond the original
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
96 ## data array are deleted. For example, with a 10-element data vector and a
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
97 ## window of length 3, the output will contain only 8 elements. The first
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
98 ## element would require calculating the function over indices
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
99 ## @w{@code{[0, 1, 2]}} and is therefore discarded. The last element would
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
100 ## require calculating the function over indices @w{@code{[9, 10, 11]}} and is
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
101 ## therefore discarded.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
102 ##
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
103 ## @item @qcode{"fill"}
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
104 ## Any window elements outside the data array are replaced by @code{NaN}. For
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
105 ## example, with a window of length 3,
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
106 ## @code{@var{y}(1) = @var{fcn} ([NaN, @var{x}(1:2)])}, and
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
107 ## @code{@var{y}(end) = @var{fcn} ([@var{x}(end-1:end), NaN])}.
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
108 ## This option usually results in @var{y} having @code{NaN} values at the
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
109 ## boundaries, although it is influenced by how @var{fcn} handles @code{NaN},
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
110 ## and also by the property @qcode{"nancond"}.
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
111 ##
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
112 ## @item @var{user_value}
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
113 ## Any window elements outside the data array are replaced by the specified
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
114 ## value @var{user_value} which must be a numeric scalar. For example, with a
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
115 ## window of length 3,
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
116 ## @code{@var{y}(1) = @var{fcn} ([@var{user_value}, @var{x}(1:2)])}, and
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
117 ## @code{@var{y}(end) = @var{fcn} ([@var{x}(end-1:end), @var{user_value}])}.
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
118 ## A common choice for @var{user_value} is 0.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
119 ##
26255
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
120 ## @item @qcode{"same"}
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
121 ## Any window elements outside the data array are replaced by the value of
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
122 ## @var{x} at the boundary. For example, with a window of length 3,
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
123 ## @code{@var{y}(1) = @var{fcn} ([@var{x}(1), @var{x}(1:2)])}, and
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
124 ## @code{@var{y}(end) = @var{fcn} ([@var{x}(end-1:end), @var{x}(end)])}.
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
125 ##
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
126 ## @item @qcode{"periodic"}
26255
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
127 ## The window is wrapped so that any missing data elements are taken from
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
128 ## the other side of the data. For example, with a window of length 3,
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
129 ## @code{@var{y}(1) = @var{fcn} ([@var{x}(end), @var{x}(1:2)])}, and
36b96226107c movfun.m: Write more complete documentation for "same" option.
Rik <rik@octave.org>
parents: 26253
diff changeset
130 ## @code{@var{y}(end) = @var{fcn} ([@var{x}(end-1:end), @var{x}(1)])}.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
131 ##
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
132 ## @end table
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
133 ##
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
134 ## Note that for some of these choices, the window size at the boundaries is
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
135 ## not the same as for the central part, and @var{fcn} must work in these
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
136 ## cases.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
137 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
138 ## @item @qcode{"nancond"}
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
139 ## Controls whether @code{NaN} and @code{NA} values should be included (value:
26256
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
140 ## @qcode{"includenan"}), or excluded (value: @qcode{"omitnan"}), from the data
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
141 ## passed to @var{fcn}. The default is @qcode{"includenan"}. Caution:
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
142 ## The @qcode{"omitnan"} option is not yet implemented.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
143 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
144 ## @item @qcode{"outdim"}
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
145 ## A row vector that selects which dimensions of the calculation will appear
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
146 ## in the output @var{y}. This is only useful when @var{fcn} returns an
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
147 ## N-dimensional array in @w{Format 1}. The default is to return all output
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
148 ## dimensions.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
149 ##
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
150 ## @end table
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
151 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
152 ## Programming Note: The property @qcode{"outdim"} can be used to save memory
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
153 ## when the output of @var{fcn} has many dimensions, or when a wrapper to the
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
154 ## base function that selects the desired outputs is too costly. When memory
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
155 ## is not an issue, the easiest way to select output dimensions is to first
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
156 ## calculate the complete result with @code{movfun} and then filter that result
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
157 ## with indexing. If code complexity is not an issue then a wrapper can be
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
158 ## created using anonymous functions. For example, if @code{basefcn}
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
159 ## is a function returning a @var{K}-dimensional row output, and only
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
160 ## dimension @var{D} is desired, then the following wrapper could be used.
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
161 ##
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
162 ## @example
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
163 ## @group
30236
628f26e122d9 maint: use rows() or columns() instead of size(__, 1 | 2) for clarity.
Rik <rik@octave.org>
parents: 29359
diff changeset
164 ## @var{fcn} = @@(x) basefcn (x)(:,columns(x) * (@var{D}-1) + (1:columns(x)));
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
165 ## @var{y} = movfun (@@fcn, @dots{});
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
166 ## @end group
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
167 ## @end example
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
168 ##
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
169 ## @seealso{movslice, prepad, postpad, permute, reshape}
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
170 ## @end deftypefn
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
171
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
172 function y = movfun (fcn, x, wlen, varargin)
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
173
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
174 if (nargin < 3)
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
175 print_usage ();
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
176 endif
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
177
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
178 valid_bc = {"shrink", "discard", "fill", "same", "periodic"};
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
179
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
180 ## Parse input arguments
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
181 parser = inputParser ();
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
182 parser.FunctionName = "movfun";
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
183 parser.addParamValue ("Endpoints", "shrink", ...
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
184 @(x) any (strcmpi (x, valid_bc)) || (isnumeric (x) && isscalar (x)));
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
185 parser.addParamValue ("dim", [], ...
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
186 @(d) isempty (d) || (isscalar (d) && isindex (d, ndims (x))));
26256
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
187 parser.addParamValue ("nancond", "includenan", ...
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
188 @(x) any (strcmpi (x, {"includenan", "omitnan"})));
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
189 parser.addParamValue ("outdim", [], ...
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
190 @(d) isempty (d) || (isvector (d) && isindex (d)));
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
191
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
192 parser.parse (varargin{:});
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
193 bc = parser.Results.Endpoints; # boundary condition
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
194 dim = parser.Results.dim; # dimension to be used as input
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
195 nancond = parser.Results.nancond; # whether NaN are ignored or not
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
196 outdim = parser.Results.outdim; # selected output dimension of fcn
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
197 clear parser
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
198 ## End parse input arguments
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
199
26256
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
200 ## If dim was not provided find the first non-singleton dimension.
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
201 szx = size (x);
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
202 if (isempty (dim))
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
203 (dim = find (szx > 1, 1)) || (dim = 1);
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
204 endif
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
205
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
206 N = szx(dim);
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
207
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
208 ## Calculate slicing indices. This call also validates WLEN input.
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
209 [slc, C, Cpre, Cpos, win] = movslice (N, wlen);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
210
26259
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
211 ## Use [nb, na] format which makes replaceval_bc() simpler.
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
212 if (isscalar (wlen))
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
213 wlen = [wlen, wlen];
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
214 endif
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
215
26256
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
216 omitnan = strcmpi (nancond, "omitnan");
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
217 if (omitnan)
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
218 warning ('movfun: "omitnan" is not yet implemented, using "includenan"');
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
219 endif
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
220
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
221 ## Move the desired dim to be the 1st dimension (rows)
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
222 nd = length (szx); # number of dimensions
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
223 dperm = [dim, 1:(dim-1), (dim+1):nd]; # permutation of dimensions
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
224 x = permute (x, dperm); # permute dims to first dimension
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
225 ncols = prod (szx(dperm(2:end))); # rest of dimensions as single column
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
226 x = reshape (x, N, ncols); # reshape input
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
227
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
228 ## Obtain function for boundary conditions
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
229 if (isnumeric (bc))
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
230 bcfcn = @replaceval_bc;
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
231 bcfcn (true, bc); # initialize replaceval function with value
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
232 else
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
233 switch (tolower (bc))
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
234 case "shrink"
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
235 bcfcn = @shrink_bc;
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
236
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
237 case "discard"
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
238 bcfcn = [];
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
239 C -= length (Cpre);
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
240 Cpre = Cpos = [];
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
241 N = length (C);
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
242 szx(dperm(1)) = N;
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
243
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
244 case "fill"
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
245 bcfcn = @replaceval_bc;
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
246 bcfcn (true, NaN);
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
247
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
248 case "same"
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
249 bcfcn = @same_bc;
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
250
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
251 case "periodic"
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
252 bcfcn = @periodic_bc;
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
253
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
254 endswitch
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
255 endif
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
256
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
257 ## FIXME: Validation doesn't seem to work correctly (noted 12/16/2018).
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
258 ## Validate that outdim makes sense
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
259 tmp = fcn (zeros (length (win), 1)); # output for window
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
260 noutdim = length (tmp); # number of output dimensions
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
261 if (! isempty (outdim))
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
262 if (max (outdim) > noutdim)
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
263 error ("Octave:invalid-input-arg", ...
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
264 "movfun: output dimension OUTDIM (%d) is larger than largest available dimension (%d)", ...
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
265 max (outdim), noutdim);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
266 endif
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
267 else
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
268 outdim = 1:noutdim;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
269 endif
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
270 soutdim = length (outdim); # length of selected output dimensions
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
271 ## If noutdim is not one then modify function to handle multiple outputs
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
272 if (noutdim > 1)
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
273 fcn_ = @(x) reshape (fcn (x), columns (x), noutdim)(:, outdim);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
274 else
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
275 fcn_ = fcn;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
276 endif
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
277
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
278 ## Apply processing to each column
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
279 ## FIXME: Is it faster with cellfun? Don't think so, but needs testing.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
280 y = zeros (N, ncols, soutdim);
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
281 parfor i = 1:ncols
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
282 y(:,i,:) = movfun_oncol (fcn_, x(:,i), wlen, bcfcn,
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
283 slc, C, Cpre, Cpos, win, soutdim);
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
284 endparfor
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
285
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
286 ## Restore shape
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
287 y = reshape (y, [szx(dperm), soutdim]);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
288 y = permute (y, [dperm, nd+1]);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
289 y = squeeze (y);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
290
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
291 endfunction
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
292
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
293 function y = movfun_oncol (fcn, x, wlen, bcfcn, slcidx, C, Cpre, Cpos, win, odim)
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
294
26253
339db43aa056 movfun.m: Implement "discard" option for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26251
diff changeset
295 N = length (Cpre) + length (C) + length (Cpos);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
296 y = NA (N, odim);
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
297
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
298 ## Process center part
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
299 y(C,:) = fcn (x(slcidx));
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
300
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
301 ## Process boundaries
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
302 if (! isempty (Cpre))
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
303 y(Cpre,:) = bcfcn (fcn, x, Cpre, win, wlen, odim);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
304 endif
26249
78c4aadfbfd9 movfun.m, movslice.m: Add support for even-size, asymmetric windows for Matlab compatibility.
Rik <rik@octave.org>
parents: 26248
diff changeset
305 if (! isempty (Cpos))
30893
e1788b1a315f maint: Use "fcn" as preferred abbreviation for "function" in m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
306 y(Cpos,:) = bcfcn (fcn, x, Cpos, win, wlen, odim);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
307 endif
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
308
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
309 endfunction
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
310
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
311 ## Apply "shrink" boundary conditions
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
312 ## Function is not applied to any window elements outside the original data.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
313 function y = shrink_bc (fcn, x, idxp, win, wlen, odim)
28945
6e460773bdda maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents: 28930
diff changeset
314
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
315 N = length (x);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
316 idx = idxp + win;
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
317 tf = (idx > 0) & (idx <= N); # idx inside boundaries
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
318
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
319 n = length (idxp);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
320 y = zeros (n, odim);
26260
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
321 ## FIXME: This nested for loop accounts for 70% of running time.
9d3c22f7fff1 movfun.m: Make Texinfo documentation prettier by marking some items as non-breakable.
Rik <rik@octave.org>
parents: 26259
diff changeset
322 ## Given that "shrink" is the default Endpoint value this
26261
eb1903f8bf98 movfun.m: Tweak documentation and remove spaces at EOL.
Rik <rik@octave.org>
parents: 26260
diff changeset
323 ## code needs to be reworked.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
324 for i = 1:n
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
325 k = idx(tf(:,i),i);
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
326 y(i,:) = fcn (x(k));
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
327 endfor
28945
6e460773bdda maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents: 28930
diff changeset
328
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
329 endfunction
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
330
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
331 ## Apply replacement value boundary conditions
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
332 ## Window is padded at beginning and end with user-specified value.
28563
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 27985
diff changeset
333 function y = replaceval_bc (fcn, x, idxp, win, wlen, ~)
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
334
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
335 persistent substitute;
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
336
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
337 ## In-band method to initialize substitute value
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
338 if (islogical (fcn))
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
339 substitute = x;
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
340 return;
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
341 endif
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
342
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
343 if (min (idxp) == 1)
26259
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
344 ## pre-pad window
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
345 sz = size (x);
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
346 sz(1) = wlen(1);
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
347 x = [substitute(ones (sz)); x];
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
348 idx = idxp + win + wlen(1);
26259
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
349 else
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
350 ## post-pad window
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
351 sz = size (x);
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
352 sz(1) = wlen(2);
3a8094a70193 movfun.m: Optimize subfunction replaceval_bc() for 33% speed improvement.
Rik <rik@octave.org>
parents: 26258
diff changeset
353 x = [x; substitute(ones (sz))];
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
354 idx = idxp + win;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
355 endif
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
356
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
357 y = fcn (x(idx));
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
358
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
359 endfunction
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
360
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
361 ## Apply "same" boundary conditions
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
362 ## 'y' values outside window are replaced by value of 'x' at the window
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
363 ## boundary.
28563
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 27985
diff changeset
364 function y = same_bc (fcn, x, idxp, win, ~, ~)
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30236
diff changeset
365
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
366 idx = idxp + win;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
367 idx(idx < 1) = 1;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
368 N = length (x);
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
369 idx(idx > N) = N;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
370 y = fcn (x(idx));
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30236
diff changeset
371
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
372 endfunction
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
373
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
374 ## Apply "periodic" boundary conditions
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
375 ## Window wraps around. Window values outside data array are replaced with
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
376 ## data from the other end of the array.
28563
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 27985
diff changeset
377 function y = periodic_bc (fcn, x, idxp, win, ~, ~)
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30236
diff changeset
378
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
379 N = length (x);
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
380 idx = idxp + win;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
381 tf = idx < 1;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
382 idx(tf) = N + idx(tf);
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
383 tf = idx > N;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
384 idx(tf) = idx(tf) - N;
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
385 y = fcn (x(idx));
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30236
diff changeset
386
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
387 endfunction
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
388
26244
58b3107a00bc Update documentation for movXXX functions (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 26241
diff changeset
389
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
390 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
391 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
392 %! t = 2 * pi * linspace (0,1,100).';
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
393 %! x = sin (3 * t);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
394 %! xn = x + 0.1 * randn (size (x));
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
395 %! x_s = movfun (@mean, xn, 5, "Endpoints", "shrink");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
396 %! x_p = movfun (@mean, xn, 5, "Endpoints", "periodic");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
397 %! x_m = movfun (@mean, xn, 5, "Endpoints", "same");
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
398 %! x_z = movfun (@mean, xn, 5, "Endpoints", 0);
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
399 %! x_f = movfun (@mean, xn, 5, "Endpoints", "fill");
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
400 %!
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
401 %! h = plot (t, xn, "o;noisy signal;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
402 %! t, x, "-;true;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
403 %! t, x_s, "-;shrink;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
404 %! t, x_p, "-;periodic;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
405 %! t, x_m, "-;same;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
406 %! t, x_z, "-;zero;",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
407 %! t, x_f, "-;fill;");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
408 %! set (h(1), "markerfacecolor", "auto");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
409 %! set (h(2:end), "linewidth", 3);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
410 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
411 %! xlabel ("time");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
412 %! ylabel ("signal");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
413 %! title ("moving mean with different boundary conditions");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
414 %! #-----------------------------------------------------------------
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
415 %! # Moving mean of noisy sinusoidal function with different boundary
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
416 %! # conditions.
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
417
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
418 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
419 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
420 %! t = 2 * pi * linspace (0,1,100).';
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
421 %! x = sin (3 * t);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
422 %! xn = x + 0.1 * randn (size (x));
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
423 %! nwin = 5;
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
424 %! x_ = zeros (rows (x), nwin);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
425 %! wlen = 3 + (1:nwin) * 4;
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
426 %! for i = 1:nwin
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
427 %! x_(:,i) = movfun (@mean, xn, wlen(i), "Endpoints", "periodic");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
428 %! endfor
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
429 %!
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
430 %! h = plot (t, xn, "o",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
431 %! t, x, "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
432 %! t, x_, "-");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
433 %! set (h(1), "markerfacecolor", "auto");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
434 %! set (h(2:end), "linewidth", 3);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
435 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
436 %! xlabel ("time");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
437 %! ylabel ("signal");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
438 %! title ({'moving mean with "periodic" boundary conditions',
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
439 %! "and windows of different lengths"});
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
440 %! legend (h, {"noisy", "true", strsplit(num2str(wlen)){:}});
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
441 %! #-----------------------------------------------------------------
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
442 %! # Moving mean of noisy sinusoidal function with periodic boundary conditions
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
443 %! # using windows of different lengths.
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
444
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
445 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
446 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
447 %! t = linspace (0,1,100).';
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
448 %! x = exp (-(t - [0.1:0.3:1]).^2/2/0.1^2);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
449 %! y = movfun (@max, x, 15);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
450 %!
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
451 %! h = plot (t, x, "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
452 %! t, y, "--");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
453 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
454 %! xlabel ("time");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
455 %! ylabel ("signal");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
456 %! title ("moving max of several Gaussian functions");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
457 %! #-----------------------------------------------------------------
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
458 %! # Moving max of different Gaussian functions.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
459 %! # Illustrates the application of movfun() to inputs with several columns.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
460
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
461 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
462 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
463 %! t = linspace (0,1-1e-2,100).';
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
464 %! w = 2 * pi * 3;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
465 %! x = sin (w * t);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
466 %! y = cos (w * t);
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
467 %! y_ = movfun (@diff, x, [1 0], "Endpoints", "periodic");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
468 %! ## Is the same as y_ = x(2:end) - x(1:end-1);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
469 %! dt = t(2) - t(1);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
470 %! y_ = y_ / w / dt;
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
471 %!
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
472 %! h = plot (t, x, "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
473 %! t, y, "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
474 %! t, y_, ":");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
475 %! set (h, "linewidth", 3);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
476 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
477 %! xlabel ("time");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
478 %! ylabel ("signal");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
479 %! title ("movfun with periodic boundary conditions and asymmetric window");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
480 %! legend (h, {"sin", "cos", "[nb, na]"});
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
481 %! #-----------------------------------------------------------------
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
482 %! # Backward diff() of sinusoidal function with periodic boundary conditions.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
483 %! # Illustrates the use of asymmetric windows.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
484
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
485 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
486 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
487 %! N = 1e3;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
488 %! wlen = 99;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
489 %! x = linspace (-1, 1, N).';
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
490 %! pp = [-2 0 1 0];
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
491 %! y = polyval (pp, x);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
492 %! yn = y + 0.1 * (abs (y) + 0.5) .* exp (randn (N, 1));
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
493 %!
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
494 %! st = movfun (@(y) (statistics (y)).', yn, wlen);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
495 %!
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
496 %! h = plot (x, y, "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
497 %! x, yn, ".",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
498 %! x, st(:,[3 6]), "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
499 %! x, st(:,6) + [-1 1].*st(:,7), "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
500 %! x, st(:,[1 2 4 5]), "-");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
501 %! set (h([1 3:4]), "linewidth", 3); # mean
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
502 %! set (h(5:end), "color", "k");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
503 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
504 %! xlabel ("x")
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
505 %! ylabel ("y")
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
506 %! title ("movfun() with Format 1 output data");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
507 %! legend (h, {"noiseless", "noisy", "mean", "median"})
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
508 %! #-----------------------------------------------------------------
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
509 %! # Moving window statistics. The plot highlights mean and median.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
510 %! # Black lines how minimum, first quartile, third quartile, and maximum.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
511 %! # Demo illustrates the use of functions with multidimensional output.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
512
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
513 %!demo
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
514 %! clf;
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
515 %! N = 1e2;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
516 %! wlen = 9;
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
517 %! x = linspace (-1, 1, N).';
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
518 %! pp = [-2 0 1 0];
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
519 %! y = polyval (pp, x);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
520 %! y(:,2) = y + 0.1 * (abs (y) + 0.5) .* exp (randn (N, 1));
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
521 %! y(:,1) = -y(:,1) + 0.1 * randn (N, 1);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
522 %!
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
523 %! fcn = @(y) [min(y), max(y)];
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
524 %! st = movfun (fcn, y, wlen);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
525 %!
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
526 %! h = plot (x, y, "o",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
527 %! x, squeeze (st(:,1,:)), "-",
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
528 %! x, squeeze (st(:,2,:)), "-");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
529 %! axis tight
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
530 %! set (h(3:4), "color", get (h(1), "color"));
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
531 %! set (h(5:6), "color", get (h(2), "color"));
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
532 %! xlabel ("x")
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
533 %! ylabel ("y")
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
534 %! title ("movfun() with Format 2 output data");
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
535 %! legend (h(1:2), {"data1", "data2"})
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
536 %! #-----------------------------------------------------------------
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
537 %! # Moving min() and max() on the same window.
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
538 %! # Demo illustrates the use of functions with flat multidimensional output.
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
539
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
540 %!test
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
541 %! x = (1:10).' + [-3, 0, 4];
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
542 %! ctrfun = @(x) x(2,:);
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
543 %! valid_bc = {"periodic", 0, "fill", "same"};
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
544 %! for bc = valid_bc
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
545 %! assert (movfun (ctrfun, x, 3, "Endpoints", bc{1}), x);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
546 %! endfor
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
547 %! x_ = x; x_([1 end],:) = x([2 end],:);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
548 %! assert (movfun (ctrfun, x, 3, "Endpoints", "shrink"), x_);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
549
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
550 %!test
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
551 %! ## dim == 2, same as transpose
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
552 %! x = randi (10, 3);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
553 %! ctrfun = @(x) x(2,:);
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
554 %! valid_bc = {"periodic", 0, "fill", "same"};
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
555 %! for bc = valid_bc
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
556 %! assert (movfun (ctrfun, x.', 3, "Endpoints", bc{1}, "dim", 2), x.');
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
557 %! endfor
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
558 %! x_ = x; x_([1 end],:) = x([2 end],:);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
559 %! assert (movfun (ctrfun, x.', 3, "Endpoints", "shrink", "dim", 2), x_.');
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
560
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
561 %!test
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
562 %! x = randi (10, 3, 10, 2);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
563 %! y = movfun (@(x) x(2,:), x, 3, "Endpoints", "same", "dim", 2);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
564 %! assert (x, y);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
565
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
566 %!test
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
567 %! ## bad zero_bc
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
568 %! x = ones (10, 1);
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
569 %! y = x; y(1:2) = y([end end-1]) = [0.6;0.8];
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
570 %! assert (movfun (@mean, x, 5, "Endpoints", 0), y);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
571
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
572 ## Asymmetric windows
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
573 %!shared x, wlen, wlen02, wlen20, ctrfun, UNO
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
574 %! x = (1:10).' + [-3, 0, 4];
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
575 %! wlen = [2, 1];
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
576 %! wlen02 = [0, 2];
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
577 %! wlen20 = [2, 0];
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
578 %! ctrfun = @(x) x(wlen(1)+1,:);
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
579 %! UNO = ones (7,1);
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
580
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
581 %!assert (movfun (ctrfun, x, wlen, "Endpoints", "periodic"), x)
26250
481708dbc540 movfun.m: Implement <numeric scalar> as value for "Endpoints" property for Matlab compatibility.
Rik <rik@octave.org>
parents: 26249
diff changeset
582 %!assert (movfun (ctrfun, x, wlen, "Endpoints", 0), x)
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
583 %!assert (movfun (ctrfun, x, wlen, "Endpoints", "fill"), x)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
584 %!assert (movfun (ctrfun, x, wlen, "Endpoints", "same"), x)
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
585 ## for shorter x, indexing fails
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
586 %!error movfun (ctrfun, x, wlen, "Endpoints", "shrink")
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
587
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
588 %!assert (movfun (@min, UNO, wlen, "Endpoints", "shrink"), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
589 %!assert (movfun (@min, UNO, wlen02, "Endpoints", "shrink"), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
590 %!assert (movfun (@min, UNO, wlen20, "Endpoints", "shrink"), UNO)
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
591
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
592 %!assert (movfun (@min, UNO, wlen02, "Endpoints", "periodic"), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
593 %!assert (movfun (@min, UNO, wlen20, "Endpoints", "periodic"), UNO)
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
594
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
595 %!assert (movfun (@max, UNO, wlen02, "Endpoints", 0), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
596 %!assert (movfun (@max, UNO, wlen20, "Endpoints", 0), UNO)
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
597
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
598 %!assert (movfun (@min, UNO, wlen02, "Endpoints", "fill"), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
599 %!assert (movfun (@min, UNO, wlen20, "Endpoints", "fill"), UNO)
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
600
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
601 %!assert (movfun (@min, UNO, wlen02, "Endpoints", "same"), UNO)
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
602 %!assert (movfun (@min, UNO, wlen20, "Endpoints", "same"), UNO)
26241
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
603
2d80a065ce9a Add functions for calculating value of function handle over windows of data (bug #48774).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
diff changeset
604 ## Multidimensional output
26251
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
605 %!assert (size( movfun (@(x) [min(x), max(x)], (1:10).', 3)), [10 2])
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
606 %!assert (size( movfun (@(x) [min(x), max(x)], cumsum (ones (10,5),2), 3)),
05ec27d632da movfun.m: Fix incorrect implementation of "fill" value for "Endpoints"
Rik <rik@octave.org>
parents: 26250
diff changeset
607 %! [10 5 2])
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
608 ## outdim > dim
28930
2883b3d08b7e maint: Remove unnecessary parentheses bracketing %!error BIST tests.
Rik <rik@octave.org>
parents: 28896
diff changeset
609 %!error movfun (@(x) [min(x), max(x)], (1:10).', 3, "Outdim", 3)
26246
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
610
7adb62e4cc39 movfun.m, movslice.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 26244
diff changeset
611 ## Test input validation
28896
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28563
diff changeset
612 %!error <Invalid call> movfun ()
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28563
diff changeset
613 %!error <Invalid call> movfun (@min)
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28563
diff changeset
614 %!error <Invalid call> movfun (@min, 1)
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
615 %!error <WLEN must be .* array of integers> movfun (@min, 1, {1})
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
616 %!error <WLEN must be .* array of integers .= 0> movfun (@min, 1, -1)
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
617 %!error <WLEN must be .* array of integers> movfun (@min, 1, 1.5)
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
618 %!error <WLEN must be . 1> movfun (@min, 1, 1)
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
619 %!error <WLEN must be a scalar or 2-element array> movfun (@min, 1, [1, 2, 3])
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
620 %!error <WLEN \(3\) must be shorter than length along DIM \(1\)>
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
621 %! movfun (@min, 1, 3)
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
622 %!error <WLEN \(4\) must be shorter than length along DIM \(1\)>
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
623 %! movfun (@min, 1, [4, 1]);
26258
6cd1752f21e9 movslice.m, movfun.m: Eliminate duplicate input validation between these functions.
Rik <rik@octave.org>
parents: 26256
diff changeset
624 %!error <WLEN \(5\) must be shorter than length along DIM \(1\)>
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
625 %! movfun (@min, 1, [1, 5]);
26256
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
626 %!warning <"omitnan" is not yet implemented>
d8ebeb1a82ea movfun.m: Change default nancond property value to "includenan" for Matlab compatibility.
Rik <rik@octave.org>
parents: 26255
diff changeset
627 %! movfun (@min, 1:3, 3, "nancond", "omitnan");
26248
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
628 ## FIXME: This test is commented out until OUTDIM validation is clarified.
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
629 %!#error <OUTDIM \(5\) is larger than largest available dimension \(3\)>
8a0778f549e8 movfun.m, movslice.m: Add additional input validation and BIST tests for same.
Rik <rik@octave.org>
parents: 26246
diff changeset
630 %! movfun (@min, ones (6,3,4), 3, "outdim", 5);