Mercurial > octave
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 |
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); |