annotate scripts/statistics/var.m @ 33623:4517f929c59d bytecode-interpreter tip

maint: Merge default to bytecode-interpreter
author Arun Giridhar <arungiridhar@gmail.com>
date Fri, 24 May 2024 16:22:41 -0400
parents 2e484f9f1f18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 32426
diff changeset
3 ## Copyright (C) 1995-2024 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/>.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
7 ##
3922
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3456
diff changeset
8 ## This file is part of Octave.
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3456
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
3922
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3456
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
14 ##
3922
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3456
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
3200
781c930425fd [project @ 1998-10-29 05:23:08 by jwe]
jwe
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
19 ##
3200
781c930425fd [project @ 1998-10-29 05:23:08 by jwe]
jwe
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
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 ########################################################################
3200
781c930425fd [project @ 1998-10-29 05:23:08 by jwe]
jwe
parents:
diff changeset
25
3453
71d2e09c15a2 [project @ 2000-01-18 08:32:09 by jwe]
jwe
parents: 3426
diff changeset
26 ## -*- texinfo -*-
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
27 ## @deftypefn {} {@var{v} =} var (@var{x})
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
28 ## @deftypefnx {} {@var{v} =} var (@var{x}, @var{w})
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
29 ## @deftypefnx {} {@var{v} =} var (@var{x}, @var{w}, @var{dim})
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
30 ## @deftypefnx {} {@var{v} =} var (@var{x}, @var{w}, @var{vecdim})
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
31 ## @deftypefnx {} {@var{v} =} var (@var{x}, @var{w}, @qcode{"all"})
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
32 ## @deftypefnx {} {@var{v} =} var (@dots{}, @var{nanflag})
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
33 ## @deftypefnx {} {[@var{v}, @var{m}] =} var (@dots{})
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
34 ## Compute the variance of the elements of the vector @var{x}.
20174
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
35 ##
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
36 ## The variance is defined as
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
37 ## @tex
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
38 ## $$ {\rm var}(x) = {1\over N-1} \sum_{i=1}^N (x_i - \bar x )^2 $$
24511
4f0e6ee6c9b8 Make documentation Sec 26.1 more consistent and Sec 25.4 clearer (bug #52685)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 23219
diff changeset
39 ## where $\bar{x}$ is the mean value of @var{x} and $N$ is the number of
4f0e6ee6c9b8 Make documentation Sec 26.1 more consistent and Sec 25.4 clearer (bug #52685)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 23219
diff changeset
40 ## elements of @var{x}.
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
41 ## @end tex
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
42 ## @ifnottex
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
43 ##
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
44 ## @example
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
45 ## @group
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
46 ## var (@var{x}) = (1 / (N-1)) * SUM_i ((@var{x}(i) - mean(@var{x}))^2)
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
47 ## @end group
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
48 ## @end example
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
49 ##
24985
d85b2485af9e doc: grammarcheck m-files ahead of 4.4 release.
Rik <rik@octave.org>
parents: 24547
diff changeset
50 ## @noindent
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
51 ## where @math{N} is the number of elements of @var{x}.
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
52 ## @end ifnottex
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
53 ##
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
54 ## If @var{x} is an array, compute the variance along the first non-singleton
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
55 ## dimensions of @var{x}.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
56 ##
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
57 ## The optional argument @var{w} determines the weighting scheme to use. Valid
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
58 ## values are:
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
59 ##
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
60 ## @table @asis
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
61 ## @item 0 [default]:
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
62 ## Normalize with @math{N-1} (population variance). This provides the square
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
63 ## root of the best unbiased estimator of the variance.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
64 ##
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
65 ## @item 1:
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
66 ## Normalize with @math{N} (sample variance). This provides the square root of
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
67 ## the second moment around the mean.
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
68 ##
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
69 ## @item a vector:
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
70 ## Compute the weighted variance with non-negative weights. The length of
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
71 ## @var{w} must equal the size of @var{x} in the operating dimension. NaN
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
72 ## values are permitted in @var{w}, will be multiplied with the associated
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
73 ## values in @var{x}, and can be excluded by the @var{nanflag} option.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
74 ##
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
75 ## @item an array:
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
76 ## Similar to vector weights, but @var{w} must be the same size as @var{x}. If
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
77 ## the operating dimension is supplied as @var{vecdim} or @qcode{"all"} and
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
78 ## @var{w} is not a scalar, @var{w} must be an same-sized array.
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
79 ## @end table
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
80 ##
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
81 ## Note: @var{w} must always be specified before specifying any of the
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
82 ## following dimension options. To use the default value for @var{w} you
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
83 ## may pass an empty input argument [].
14273
bedccd0abe39 Add comment in var.m docs about behaviour when input is a scalar
Carlo de Falco <kingcrimson@tiscali.it>
parents: 14138
diff changeset
84 ##
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
85 ## The optional variable @var{dim} forces @code{var} to operate over the
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
86 ## specified dimension, which must be a positive integer-valued number.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
87 ## Specifying any singleton dimension in @var{x}, including any dimension
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
88 ## exceeding @code{ndims (@var{x})}, will result in a variance of 0.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
89 ##
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
90 ## Specifying the dimensions as @var{vecdim}, a vector of non-repeating
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
91 ## dimensions, will return the variance calculated over the array slice defined
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
92 ## by @var{vecdim}. If @var{vecdim} indexes all dimensions of @var{x}, then it
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
93 ## is equivalent to the option @qcode{"all"}. Any dimension in @var{vecdim}
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
94 ## greater than @code{ndims (@var{x})} is ignored.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
95 ##
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
96 ## Specifying the dimension as @qcode{"all"} will force @code{var} to
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
97 ## operate on all elements of @var{x}, and is equivalent to @code{var
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
98 ## (@var{x}(:))}.
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
99 ##
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
100 ## The optional variable @var{nanflag} specifies whether to include or exclude
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
101 ## NaN values from the calculation using any of the previously specified input
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
102 ## argument combinations. The default value for @var{nanflag} is
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
103 ## @qcode{"includenan"} which keeps NaN values in the calculation. To
32151
72dcb1cef2c9 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 31870
diff changeset
104 ## exclude NaN values set the value of @var{nanflag} to @qcode{"omitnan"}.
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
105 ## The output will still contain NaN values if @var{x} consists of all NaN
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
106 ## values in the operating dimension.
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
107 ##
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
108 ## The optional second output variable @var{m} contains the mean of the
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
109 ## elements of @var{x} used to calculate the variance. If @var{v} is the
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
110 ## weighted variance, then @var{m} is also the weighted mean.
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
111 ##
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
112 ## @seealso{std, mean, cov, skewness, kurtosis, moment}
3453
71d2e09c15a2 [project @ 2000-01-18 08:32:09 by jwe]
jwe
parents: 3426
diff changeset
113 ## @end deftypefn
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
114
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
115 function [v, m] = var (x, varargin)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
116
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
117 if (nargin < 1 || nargin > 4)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
118 print_usage ();
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
119 endif
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
120
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
121 ## initialize variables
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
122 all_flag = false;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
123 omitnan = false;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
124 nvarg = numel (varargin);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
125 varg_chars = cellfun ('ischar', varargin);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
126
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
127 ## Check all char arguments.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
128 if (nvarg == 3 && ! varg_chars(3))
6046
34f96dd5441b [project @ 2006-10-10 16:10:25 by jwe]
jwe
parents: 6024
diff changeset
129 print_usage ();
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
130 endif
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
131
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
132 if (any (varg_chars))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
133 for argin = varargin(varg_chars)
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
134 switch (lower (argin{1}))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
135 case "all"
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
136 all_flag = true;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
137 case "omitnan"
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
138 omitnan = true;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
139 case "includenan"
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
140 omitnan = false;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
141 otherwise
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
142 print_usage ();
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
143 endswitch
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
144 endfor
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
145 varargin(varg_chars) = [];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
146 nvarg = numel (varargin);
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
147 endif
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
148
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
149 ## FIXME: When sparse can broadcast ops then remove sparse checks and hacks.
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
150 x_issparse = issparse (x);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
151 w = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
152 weighted = false; # true if weight vector/array used
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
153 vecdim = [];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
154 vecempty = true;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
155 vecdim_scalar_vector = [false, false]; # [false, false] for empty vecdim
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
156 szx = size (x);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
157 ndx = ndims (x);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
158
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
159 ## Check numeric arguments
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
160 if (! (isnumeric (x)))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
161 error ("var: X must be a numeric vector or matrix");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
162 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
163 if (isa (x, "single"))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
164 outtype = "single";
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
165 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
166 outtype = "double";
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
167 endif
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
168
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
169 if (nvarg > 0)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
170 if (nvarg > 2 || any (! cellfun ('isnumeric', varargin)))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
171 print_usage ();
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
172 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
173 ## Process weight input
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
174 if (any (varargin{1} < 0))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
175 error ("var: weights must not contain any negative values");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
176 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
177 if (isscalar (varargin{1}))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
178 w = varargin{1};
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
179 if (! (w == 0 || w == 1) && ! isscalar (x))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
180 error ("var: normalization scalar must be either 0 or 1");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
181 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
182 elseif (numel (varargin{1}) > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
183 weights = varargin{1};
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
184 weighted = true;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
185 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
186 if (nvarg > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
187 ## Process dimension input
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
188 vecdim = varargin{2};
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
189 if (! (vecempty = isempty (vecdim)))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
190 ## Check for empty vecdim, won't change vsv if nonzero size empty
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
191 vecdim_scalar_vector = [isscalar(vecdim), isvector(vecdim)];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
192 endif
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
193 if (! (vecdim_scalar_vector(2) && all (vecdim > 0))
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
194 || any (rem (vecdim, 1)))
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
195 error ("var: DIM must be a positive integer scalar or vector");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
196 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
197 if (vecdim_scalar_vector(1) && vecdim > ndx && ! isempty (x))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
198 ## Scalar dimension larger than ndims(x), variance of any single number
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
199 ## is zero, except for inf, NaN, and empty values of x.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
200 v = zeros (szx, outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
201 vn = ! isfinite (x);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
202 v(vn) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
203 m = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
204 return;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
205 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
206 if (vecdim_scalar_vector == [0 1] && (! all (diff (sort (vecdim)))))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
207 error ("var: VECDIM must contain non-repeating positive integers");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
208 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
209 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
210 endif
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
211
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
212 ## Check for conflicting input arguments
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
213 if (all_flag && ! vecempty)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
214 error ("var: 'all' flag cannot be used with DIM or VECDIM options");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
215 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
216 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
217 if (all_flag)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
218 if (isvector (weights))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
219 if (numel (weights) != numel (x))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
220 error ("var: weight vector element count does not match X");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
221 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
222 elseif (! (isequal (size (weights), szx)))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
223 error ("var: weight matrix or array does not match X in size");
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
224 endif
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
225
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
226 elseif (vecempty)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
227 ## Find the first non-singleton dimension.
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
228 (dim = find (szx > 1, 1)) || (dim = 1);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
229 if (isvector (weights))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
230 if (numel (weights) != szx(dim))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
231 error ("var: weight vector length does not match operating dimension");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
232 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
233 elseif (! isequal (size (weights), szx))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
234 error ("var: weight matrix or array does not match X in size");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
235 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
236 elseif (vecdim_scalar_vector(1))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
237 if (isvector (weights))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
238 if (numel (weights) != szx(vecdim))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
239 error ("var: weight vector length does not match operating dimension");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
240 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
241 elseif (! isequal (size (weights), szx))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
242 error ("var: weight matrix or array does not match X in size");
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
243 endif
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
244
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
245 elseif (vecdim_scalar_vector(2) && ! (isequal (size (weights), szx)))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
246 error ("var: weight matrix or array does not match X in size");
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
247 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
248 endif
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
249
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
250 ## Handle special cases of empty or scalar X and exit early.
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
251 if (isempty (x))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
252 if (vecempty && (ndx == 2 || all (szx == 0)))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
253 v = NaN (outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
254 if (nargout > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
255 m = NaN (outtype);
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
256 endif
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
257 return;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
258 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
259 if (vecdim_scalar_vector(1))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
260 szx(vecdim) = 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
261 v = NaN (szx, outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
262 if (nargout > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
263 m = NaN (szx, outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
264 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
265 return;
4849
a3440ff5eb14 [project @ 2004-04-06 15:23:56 by jwe]
jwe
parents: 4171
diff changeset
266 endif
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
267 elseif (isscalar (x))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
268 if (isfinite (x))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
269 v = zeros (outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
270 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
271 v = NaN (outtype);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
272 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
273 if (nargout > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
274 m = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
275 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
276 return;
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
277 endif
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
278
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
279 if (nvarg == 0)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
280 ## Only numeric input argument, no dimensions or weights.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
281 if (all_flag)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
282 x = x(:);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
283 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
284 x = x(! isnan (x));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
285 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
286 n = length (x);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
287 m = sum (x) ./ n;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
288 v = sum (abs (x - m) .^ 2) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
289 if (n == 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
290 v = 0;
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
291 endif
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
292 else
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
293 ## Find the first non-singleton dimension.
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
294 (dim = find (szx > 1, 1)) || (dim = 1);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
295 n = szx(dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
296 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
297 n = sum (! isnan (x), dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
298 xn = isnan (x);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
299 x(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
300 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
301 m = sum (x, dim) ./ n;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
302 dims = ones (1, ndx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
303 dims(dim) = szx(dim);
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
304 if (x_issparse)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
305 m_exp = repmat (m, dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
306 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
307 m_exp = m .* ones (dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
308 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
309 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
310 x(xn) = m_exp(xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
311 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
312 v = sumsq (x - m_exp, dim) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
313 if (numel (n) == 1)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
314 divby0 = (n .* ones (size (v))) == 1;
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
315 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
316 divby0 = n == 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
317 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
318 v(divby0) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
319 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
320
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
321 elseif (nvarg == 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
322 ## Two numeric input arguments, w or weights given.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
323 if (all_flag)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
324 x = x(:);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
325 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
326 weights = weights(:);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
327 wx = weights .* x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
328 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
329 weights = ones (length (x), 1);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
330 wx = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
331 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
332
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
333 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
334 xn = isnan (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
335 wx = wx(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
336 weights = weights(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
337 x = x(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
338 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
339 n = length (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
340 m = sum (wx) ./ sum (weights);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
341 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
342 v = sum (weights .* (abs (x - m) .^ 2)) ./ sum (weights);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
343 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
344 v = sum (weights .* (abs (x - m) .^ 2)) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
345 if (n == 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
346 v = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
347 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
348 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
349
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
350 else
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
351 ## Find the first non-singleton dimension.
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
352 (dim = find (szx > 1, 1)) || (dim = 1);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
353 if (! weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
354 weights = ones (szx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
355 wx = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
356 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
357 if (isvector (weights))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
358 dims = 1:ndx;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
359 dims([1, dim]) = [dim, 1];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
360 weights = zeros (szx) + permute (weights(:), dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
361 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
362 wx = weights .* x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
363 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
364 n = size (wx, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
365 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
366 xn = isnan (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
367 n = sum (! xn, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
368 wx(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
369 weights(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
370 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
371 m = sum (wx, dim) ./ sum (weights, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
372 dims = ones (1, ndims (wx));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
373 dims(dim) = size (wx, dim);
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
374 if (x_issparse)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
375 m_exp = repmat (m, dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
376 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
377 m_exp = m .* ones (dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
378 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
379 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
380 x(xn) = m_exp(xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
381 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
382 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
383 v = sum (weights .* ((x - m_exp) .^ 2), dim) ./ sum (weights, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
384 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
385 v = sumsq (x - m_exp, dim) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
386 if (numel (n) == 1)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
387 divby0 = (n .* ones (size (v))) == 1;
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
388 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
389 divby0 = n == 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
390 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
391 v(divby0) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
392 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
393 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
394
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
395 elseif (nvarg == 2)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
396 ## Three numeric input arguments, both w or weights and dim or vecdim given.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
397 if (vecdim_scalar_vector(1))
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
398 if (! weighted)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
399 weights = ones (szx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
400 wx = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
401 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
402 if (isvector (weights))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
403 dims = 1:ndx;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
404 dims([1, vecdim]) = [vecdim, 1];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
405 weights = zeros (szx) + permute (weights(:), dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
406 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
407 wx = weights .* x;
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
408 endif
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
409 n = size (wx, vecdim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
410 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
411 n = sum (! isnan (wx), vecdim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
412 xn = isnan (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
413 wx(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
414 weights(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
415 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
416 m = sum (wx, vecdim) ./ sum (weights, vecdim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
417 dims = ones (1, ndims (wx));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
418 dims(vecdim) = size (wx, vecdim);
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
419 if (x_issparse)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
420 m_exp = repmat (m, dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
421 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
422 m_exp = m .* ones (dims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
423 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
424 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
425 x(xn) = m_exp(xn);
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
426 endif
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
427 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
428 v = sum (weights .* ((x - m_exp) .^ 2), vecdim) ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
429 ./ sum (weights, vecdim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
430 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
431 v = sumsq (x - m_exp, vecdim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
432 vn = isnan (v);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
433 v = v ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
434 if (numel (n) == 1)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
435 divby0 = (n .* ones (size (v))) == 1;
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
436 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
437 divby0 = n == 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
438 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
439 v(divby0) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
440 v(vn) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
441 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
442
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
443 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
444 ## Weights and nonscalar vecdim specified
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
445
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
446 ## Ignore dimensions in VECDIM larger than actual array.
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
447 remdims = 1 : ndx; # All dimensions
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
448 vecdim(vecdim > ndx) = [];
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
449 ## Calculate permutation vector
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
450 remdims(vecdim) = []; # Delete dimensions specified by vecdim
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
451 nremd = numel (remdims);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
452
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
453 ## If all dimensions are given, it is equivalent to the 'all' flag.
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
454 if (nremd == 0)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
455 x = x(:);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
456 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
457 weights = weights(:);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
458 wx = weights .* x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
459 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
460 weights = ones (length (x), 1);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
461 wx = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
462 endif
31371
c549b2401c38 maint: Merge stable to default.
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31307 31370
diff changeset
463
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
464 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
465 xn = isnan (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
466 wx = wx(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
467 weights = weights(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
468 x = x(! xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
469 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
470 n = length (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
471 m = sum (wx) ./ sum (weights);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
472 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
473 v = sum (weights .* (abs (x - m) .^ 2)) ./ sum (weights);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
474 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
475 v = sum (weights .* (abs (x - m) .^ 2)) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
476 if (n == 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
477 v = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
478 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
479 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
480
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
481 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
482
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
483 ## FIXME: much of the reshaping can be skipped once Octave's sum can
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
484 ## take a vecdim argument.
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
485
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
486 ## Apply weights
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
487 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
488 wx = weights .* x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
489 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
490 weights = ones (szx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
491 wx = x;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
492 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
493
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
494 ## Permute to push vecdims to back
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
495 perm = [remdims, vecdim];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
496 wx = permute (wx, perm);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
497 weights = permute (weights, perm);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
498 x = permute (x, perm);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
499
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
500 ## Reshape to squash all vecdims in final dimension
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
501 szwx = size (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
502 sznew = [szwx(1:nremd), prod(szwx(nremd+1:end))];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
503 wx = reshape (wx, sznew);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
504 weights = reshape (weights, sznew);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
505 x = reshape (x, sznew);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
506
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
507 ## Calculate var on final squashed dimension
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
508 dim = nremd + 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
509 n = size (wx, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
510 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
511 xn = isnan (wx);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
512 n = sum (! xn, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
513 wx(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
514 weights(xn) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
515 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
516 m = sum (wx, dim) ./ sum (weights, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
517 m_exp = zeros (sznew) + m;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
518 if (omitnan)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
519 x(xn) = m_exp(xn);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
520 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
521 if (weighted)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
522 v = sum (weights .* ((x - m_exp) .^ 2), dim) ./ sum (weights, dim);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
523 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
524 v = sumsq (x - m_exp, dim) ./ (n - 1 + w);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
525 if (numel (n) == 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
526 divby0 = n .* ones (size (v)) == 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
527 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
528 divby0 = n == 1;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
529 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
530 v(divby0) = 0;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
531 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
532
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
533 ## Inverse permute back to correct dimensions
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
534 v = ipermute (v, perm);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
535 if (nargout > 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
536 m = ipermute (m, perm);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
537 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
538 endif
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
539 endif
3200
781c930425fd [project @ 1998-10-29 05:23:08 by jwe]
jwe
parents:
diff changeset
540 endif
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3200
diff changeset
541
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
542 ## Preserve class type
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
543 if (nargout < 2)
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
544 if (strcmp (outtype, "single"))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
545 v = single (v);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
546 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
547 v = double (v);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
548 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
549 else
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
550 if (strcmp (outtype, "single"))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
551 v = single (v);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
552 m = single (m);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
553 else
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
554 v = double (v);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
555 m = double (m);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
556 endif
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
557 endif
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
558
3200
781c930425fd [project @ 1998-10-29 05:23:08 by jwe]
jwe
parents:
diff changeset
559 endfunction
9371
56751dfc6ebd fix var for scalar and empty arguments
John W. Eaton <jwe@octave.org>
parents: 9245
diff changeset
560
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
561
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14336
diff changeset
562 %!assert (var (13), 0)
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14336
diff changeset
563 %!assert (var (single (13)), single (0))
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14336
diff changeset
564 %!assert (var ([1,2,3]), 1)
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14336
diff changeset
565 %!assert (var ([1,2,3], 1), 2/3, eps)
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14336
diff changeset
566 %!assert (var ([1,2,3], [], 1), [0,0,0])
21309
7fbecef105ca Allow statistics functions to work over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents: 20852
diff changeset
567 %!assert (var ([1,2,3], [], 3), [0,0,0])
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
568 %!assert (var (5, 99), 0)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
569 %!assert (var (5, 99, 1), 0)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
570 %!assert (var (5, 99, 2), 0)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
571 %!assert (var ([5 3], [99 99], 2), 1)
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
572 %!assert (var ([1:7], [1:7]), 3)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
573 %!assert (var ([eye(3)], [1:3]), [5/36, 2/9, 1/4], eps)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
574 %!assert (var (ones (2,2,2), [1:2], 3), [(zeros (2,2))])
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
575 %!assert (var ([1 2; 3 4], 0, 'all'), var ([1:4]))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
576 %!assert (var (reshape ([1:8], 2, 2, 2), 0, [1 3]), [17/3 17/3], eps)
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
577 %!assert (var ([1 2 3;1 2 3], [], [1 2]), 0.8, eps)
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
578
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
579 ## Test single input and optional arguments "all", DIM, "omitnan")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
580 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
581 %! x = [-10:10];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
582 %! y = [x;x+5;x-5];
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
583 %! assert (var (x), 38.5);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
584 %! assert (var (y, [], 2), [38.5; 38.5; 38.5]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
585 %! assert (var (y, 0, 2), [38.5; 38.5; 38.5]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
586 %! assert (var (y, 1, 2), ones (3,1) * 36.66666666666666, 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
587 %! assert (var (y, "all"), 54.19354838709678, 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
588 %! y(2,4) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
589 %! assert (var (y, "all"), NaN);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
590 %! assert (var (y, "all", "includenan"), NaN);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
591 %! assert (var (y, "all", "omitnan"), 55.01533580116342, 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
592 %! assert (var (y, 0, 2, "includenan"), [38.5; NaN; 38.5]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
593 %! assert (var (y, [], 2), [38.5; NaN; 38.5]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
594 %! assert (var (y, [], 2, "omitnan"), [38.5; 37.81842105263158; 38.5], 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
595
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
596 ## Tests for different weight and omitnan code paths
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
597 %!assert (var ([1 NaN 3], [1 2 3], "omitnan"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
598 %!assert (var ([1 2 3], [1 NaN 3], "omitnan"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
599 %!assert (var (magic(3), [1 NaN 3], "omitnan"), [3 12 3], eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
600 %!assert (var ([1 NaN 3], [1 2 3], "omitnan", "all"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
601 %!assert (var ([1 NaN 3], [1 2 3], "all", "omitnan"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
602 %!assert (var ([1 2 3], [1 NaN 3], "omitnan", "all"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
603 %!assert (var ([1 NaN 3], [1 2 3], 2, "omitnan"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
604 %!assert (var ([1 2 3], [1 NaN 3], 2, "omitnan"), 0.75, eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
605 %!assert (var (magic(3), [1 NaN 3], 1, "omitnan"), [3 12 3], eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
606 %!assert (var (magic(3), [1 NaN 3], 2, "omitnan"), [0.75;3;0.75], eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
607 %!assert (var ([4 4; 4 6; 6 6], [1 3], 2, 'omitnan'), [0;0.75;0], eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
608 %!assert (var ([4 NaN; 4 6; 6 6], [1 2 3], 1, 'omitnan'), [1 0])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
609 %!assert (var ([4 NaN; 4 6; 6 6], [1 3], 2, 'omitnan'), [0;0.75;0], eps)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
610 %!assert (var (3*reshape(1:18, [3 3 2]), [1 2 3], 1, 'omitnan'), ones(1,3,2)*5)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
611 %!assert (var (reshape(1:18, [3 3 2]), [1 2 3], 2, 'omitnan'), 5*ones(3,1,2))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
612 %!assert (var (3*reshape(1:18, [3 3 2]), ones (3,3,2), [1 2], 'omitnan'), ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
613 %! 60 * ones(1,1,2))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
614 %!assert (var (3*reshape(1:18, [3 3 2]), ones (3,3,2), [1 4], 'omitnan'), ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
615 %! 6 * ones(1,3,2))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
616 %!assert (var (6*reshape(1:18, [3 3 2]), ones (3,3,2), [1:3], 'omitnan'), 969)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
617 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
618 %! x = reshape(1:18, [3 3 2]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
619 %! x([2, 14]) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
620 %! w = ones (3,3,2);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
621 %! assert (var (16*x, w, [1:3], 'omitnan'), 6519);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
622 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
623 %! x = reshape(1:18, [3 3 2]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
624 %! w = ones (3,3,2);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
625 %! w([2, 14]) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
626 %! assert (var (16*x, w, [1:3], 'omitnan'), 6519);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
627
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
628 ## Test input case insensitivity
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
629 %!assert (var ([1 2 3], "aLl"), 1)
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
630 %!assert (var ([1 2 3], "OmitNan"), 1)
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
631 %!assert (var ([1 2 3], "IncludeNan"), 1)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
632
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
633 ## Test dimension indexing with vecdim in n-dimensional arrays
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
634 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
635 %! x = repmat ([1:20;6:25], [5, 2, 6, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
636 %! assert (size (var (x, 0, [3 2])), [10, 1, 1, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
637 %! assert (size (var (x, 1, [1 2])), [1, 1, 6, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
638 %! assert (size (var (x, [], [1 2 4])), [1, 1, 6]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
639 %! assert (size (var (x, 0, [1 4 3])), [1, 40]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
640 %! assert (size (var (x, [], [1 2 3 4])), [1, 1]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
641
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
642 ## Test matrix with vecdim, weighted, matrix weights, omitnan
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
643 %!assert (var (3*magic(3)), [63 144 63])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
644 %!assert (var (3*magic(3), 'omitnan'), [63 144 63])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
645 %!assert (var (3*magic(3), 1), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
646 %!assert (var (3*magic(3), 1, 'omitnan'), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
647 %!assert (var (3*magic(3), ones(1,3), 1), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
648 %!assert (var (3*magic(3), ones(1,3), 1, 'omitnan'), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
649 %!assert (var (2*magic(3), [1 1 NaN], 1, 'omitnan'), [25 16 1])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
650 %!assert (var (3*magic(3), ones(3,3)), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
651 %!assert (var (3*magic(3), ones(3,3), 'omitnan'), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
652 %!assert (var (3*magic(3), [1 1 1; 1 1 1; 1 NaN 1], 'omitnan'), [42 36 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
653 %!assert (var (3*magic(3), ones(3,3), 1), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
654 %!assert (var (3*magic(3), ones(3,3), 1, 'omitnan'), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
655 %!assert (var (3*magic(3), [1 1 1; 1 1 1; 1 NaN 1], 1, 'omitnan'), [42 36 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
656 %!assert (var (3*magic(3), ones(3,3), [1 4]), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
657 %!assert (var (3*magic(3), ones(3,3), [1 4], 'omitnan'), [42 96 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
658 %!assert (var (3*magic(3), [1 1 1; 1 1 1; 1 NaN 1],[1 4],'omitnan'), [42 36 42])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
659
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
660 ## Test results with vecdim in n-dimensional arrays and "omitnan"
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
661 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
662 %! x = repmat ([1:20;6:25], [5, 2, 6, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
663 %! v = repmat (33.38912133891213, [10, 1, 1, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
664 %! assert (var (x, 0, [3, 2]), v, 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
665 %! v = repmat (33.250, [10, 1, 1, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
666 %! assert (var (x, 1, [3, 2]), v, 1e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
667 %! x(2,5,6,3) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
668 %! v(2,1,1,3) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
669 %! assert (var (x, 1, [3, 2]), v, 4e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
670 %! v = repmat (33.38912133891213, [10 1 1 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
671 %! v(2,1,1,3) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
672 %! assert (var (x, [], [3, 2]), v, 4e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
673 %! v(2,1,1,3) = 33.40177912169048;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
674 %! assert (var (x, [], [3, 2], "omitnan"), v, 4e-14);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
675
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
676 ## Testing weights vector & arrays
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
677 %!assert (var (ones (2,2,2), [1:2], 3), [(zeros (2, 2))])
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
678 %!assert (var (magic (3), [1:9], "all"), 6.666666666666667, 1e-14)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
679
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
680 ## Test exceeding dimensions
31870
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
681 %!assert (var (ones (2,2), [], 3), zeros (2,2))
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
682 %!assert (var (ones (2,2,2), [], 99), zeros (2,2,2))
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
683 %!assert (var (magic (3), [], 3), zeros (3,3))
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
684 %!assert (var (magic (3), [], 1), [7, 16, 7])
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
685 %!assert (var (magic (3), [], [1 3]), [7, 16, 7])
6a2638cbea96 maint: Update code in cset c6eeb8b44c28 to use Octave core coding conventions (patch #10314).
Rik <rik@octave.org>
parents: 31868
diff changeset
686 %!assert (var (magic (3), [], [1 99]), [7, 16, 7])
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
687
30998
1bf26f913b9c std.m, var.m: Cleanup functions.
Rik <rik@octave.org>
parents: 30997
diff changeset
688 ## Test empty inputs
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
689 %!assert (var ([]), NaN)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
690 %!assert (class (var (single ([]))), "single")
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
691 %!assert (var ([],[],1), NaN(1,0))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
692 %!assert (var ([],[],2), NaN(0,1))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
693 %!assert (var ([],[],3), [])
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
694 %!assert (class (var (single ([]), [], 1)), "single")
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
695 %!assert (var (ones (1,0)), NaN)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
696 %!assert (var (ones (1,0), [], 1), NaN(1,0))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
697 %!assert (var (ones (1,0), [], 2), NaN)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
698 %!assert (var (ones (1,0), [], 3), NaN(1,0))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
699 %!assert (class (var (ones (1, 0, "single"), [], 1)), "single")
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
700 %!assert (var (ones (0,1)), NaN)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
701 %!assert (var (ones (0,1), [], 1), NaN)
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
702 %!assert (var (ones (0,1), [], 2), NaN(0,1))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
703 %!assert (var (ones (0,1), [], 3), NaN(0,1))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
704 %!assert (var (ones (1,3,0,2)), NaN(1,1,0,2))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
705 %!assert (var (ones (1,3,0,2), [], 1), NaN(1,3,0,2))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
706 %!assert (var (ones (1,3,0,2), [], 2), NaN(1,1,0,2))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
707 %!assert (var (ones (1,3,0,2), [], 3), NaN(1,3,1,2))
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
708 %!assert (var (ones (1,3,0,2), [], 4), NaN(1,3,0))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
709 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
710 %! [~, m] = var ([]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
711 %! assert (m, NaN);
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
712
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
713 ## Test optional mean output
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
714 %!test <*62395>
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
715 %! [~, m] = var (13);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
716 %! assert (m, 13);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
717 %! [~, m] = var (single(13));
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
718 %! assert (m, single(13));
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
719 %! [~, m] = var ([1, 2, 3; 3 2 1], []);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
720 %! assert (m, [2 2 2]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
721 %! [~, m] = var ([1, 2, 3; 3 2 1], [], 1);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
722 %! assert (m, [2 2 2]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
723 %! [~, m] = var ([1, 2, 3; 3 2 1], [], 2);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
724 %! assert (m, [2 2]');
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
725 %! [~, m] = var ([1, 2, 3; 3 2 1], [], 3);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
726 %! assert (m, [1 2 3; 3 2 1]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
727
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
728 ## Test mean output, weighted inputs, vector dims
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
729 %!test <*62395>
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
730 %! [~, m] = var (5,99);
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
731 %! assert (m, 5);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
732 %! [~, m] = var ([1:7], [1:7]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
733 %! assert (m, 5);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
734 %! [~, m] = var ([eye(3)], [1:3]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
735 %! assert (m, [1/6, 1/3, 0.5], eps);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
736 %! [~, m] = var (ones (2,2,2), [1:2], 3);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
737 %! assert (m, ones (2,2));
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
738 %! [~, m] = var ([1 2; 3 4], 0, 'all');
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
739 %! assert (m, 2.5, eps);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
740 %! [~, m] = var (reshape ([1:8], 2, 2, 2), 0, [1 3]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
741 %! assert (m, [3.5, 5.5], eps);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
742 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
743 %! [v, m] = var (4 * eye (2), [1, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
744 %! assert (v, [3, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
745 %! assert (m, [1, 3]);
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
746
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
747 ## Test mean output, empty inputs, omitnan
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
748 %!test <*62395>
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
749 %! [~, m] = var ([]);
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
750 %! assert (m, NaN);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
751 #%! [~, m] = var ([],[],1);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
752 #%! assert (m, NaN(1,0));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
753 #%! [~, m] = var ([],[],2);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
754 #%! assert (m, NaN(0,1));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
755 #%! [~, m] = var ([],[],3);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
756 #%! assert (m, []);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
757 #%! [~, m] = var (ones (1,3,0,2));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
758 #%! assert (m, NaN(1,1,0,2));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
759
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
760 ## Test mean output, nD array
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
761 %!test <*62395>
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
762 %! x = repmat ([1:20;6:25], [5, 2, 6, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
763 %! [~, m] = var (x, 0, [3 2]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
764 %! assert (m, mean (x, [3 2]));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
765 %! [~, m] = var (x, 0, [1 2]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
766 %! assert (m, mean (x, [1 2]));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
767 %! [~, m] = var (x, 0, [1 3 4]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
768 %! assert (m, mean (x, [1 3 4]));
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
769 %!test
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
770 %! x = repmat ([1:20;6:25], [5, 2, 6, 3]);
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
771 %! x(2,5,6,3) = NaN;
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
772 %! [~, m] = var (x, 0, [3 2], "omitnan");
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
773 %! assert (m, mean (x, [3 2], "omitnan"));
30997
5330efaf9476 Add optional second output to var and std (bug #62395)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30617
diff changeset
774
31305
3b16c2d90326 var.m: Ensure consistent NaN outputs for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30616
diff changeset
775 ## Test Inf and NaN inputs
31307
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
776 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
777 %! [v, m] = var (Inf);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
778 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
779 %! assert (m, Inf);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
780 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
781 %! [v, m] = var (NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
782 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
783 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
784 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
785 %! [v, m] = var ([1, Inf, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
786 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
787 %! assert (m, Inf);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
788 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
789 %! [v, m] = var ([1, Inf, 3]');
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
790 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
791 %! assert (m, Inf);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
792 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
793 %! [v, m] = var ([1, NaN, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
794 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
795 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
796 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
797 %! [v, m] = var ([1, NaN, 3]');
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
798 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
799 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
800 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
801 %! [v, m] = var ([1, Inf, 3], [], 1);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
802 %! assert (v, [0, NaN, 0]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
803 %! assert (m, [1, Inf, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
804 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
805 %! [v, m] = var ([1, Inf, 3], [], 2);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
806 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
807 %! assert (m, Inf);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
808 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
809 %! [v, m] = var ([1, Inf, 3], [], 3);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
810 %! assert (v, [0, NaN, 0]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
811 %! assert (m, [1, Inf, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
812 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
813 %! [v, m] = var ([1, NaN, 3], [], 1);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
814 %! assert (v, [0, NaN, 0]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
815 %! assert (m, [1, NaN, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
816 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
817 %! [v, m] = var ([1, NaN, 3], [], 2);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
818 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
819 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
820 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
821 %! [v, m] = var ([1, NaN, 3], [], 3);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
822 %! assert (v, [0, NaN, 0]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
823 %! assert (m, [1, NaN, 3]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
824 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
825 %! [v, m] = var ([1, 2, 3; 3, Inf, 5]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
826 %! assert (v, [2, NaN, 2]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
827 %! assert (m, [2, Inf, 4]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
828 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
829 %! [v, m] = var ([1, Inf, 3; 3, Inf, 5]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
830 %! assert (v, [2, NaN, 2]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
831 %! assert (m, [2, Inf, 4]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
832 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
833 %! [v, m] = var ([1, 2, 3; 3, NaN, 5]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
834 %! assert (v, [2, NaN, 2]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
835 %! assert (m, [2, NaN, 4]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
836 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
837 %! [v, m] = var ([1, NaN, 3; 3, NaN, 5]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
838 %! assert (v, [2, NaN, 2]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
839 %! assert (m, [2, NaN, 4]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
840 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
841 %! [v, m] = var ([Inf, 2, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
842 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
843 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
844 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
845 %! [v, m] = var ([Inf, 2, NaN]');
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
846 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
847 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
848 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
849 %! [v, m] = var ([NaN, 2, Inf]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
850 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
851 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
852 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
853 %! [v, m] = var ([NaN, 2, Inf]');
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
854 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
855 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
856 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
857 %! [v, m] = var ([Inf, 2, NaN], [], 1);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
858 %! assert (v, [NaN, 0, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
859 %! assert (m, [Inf, 2, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
860 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
861 %! [v, m] = var ([Inf, 2, NaN], [], 2);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
862 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
863 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
864 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
865 %! [v, m] = var ([NaN, 2, Inf], [], 1);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
866 %! assert (v, [NaN, 0, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
867 %! assert (m, [NaN, 2, Inf]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
868 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
869 %! [v, m] = var ([NaN, 2, Inf], [], 2);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
870 %! assert (v, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
871 %! assert (m, NaN);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
872 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
873 %! [v, m] = var ([1, 3, NaN; 3, 5, Inf]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
874 %! assert (v, [2, 2, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
875 %! assert (m, [2, 4, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
876 %!test <*63203>
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
877 %! [v, m] = var ([1, 3, Inf; 3, 5, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
878 %! assert (v, [2, 2, NaN]);
94dc0f5ba8a3 var.m: Add two-output tests for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31306
diff changeset
879 %! assert (m, [2, 4, NaN]);
31305
3b16c2d90326 var.m: Ensure consistent NaN outputs for Inf and NaN inputs (bug #63203)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30616
diff changeset
880
31370
80bd450892b2 var.m: Use bsxfun rather than broadcasting with vector weighting (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31305
diff changeset
881 ## Test sparse/diagonal inputs
31372
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
882 %!test <*63291>
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
883 %! [v, m] = var (2 * eye (2));
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
884 %! assert (v, [2, 2]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
885 %! assert (m, [1, 1]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
886 %!test <*63291>
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
887 %! [v, m] = var (4 * eye (2), [1, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
888 %! assert (v, [3, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
889 %! assert (m, [1, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
890 %!test <*63291>
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
891 %! [v, m] = var (sparse (2 * eye (2)));
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
892 %! assert (full (v), [2, 2]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
893 %! assert (full (m), [1, 1]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
894 %!test <*63291>
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
895 %! [v, m] = var (sparse (4 * eye (2)), [1, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
896 %! assert (full (v), [3, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
897 %! assert (full (m), [1, 3]);
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
898 %!test<*63291>
31372
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
899 %! [v, m] = var (sparse (eye (2)));
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
900 %! assert (issparse (v));
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
901 %! assert (issparse (m));
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
902 %!test<*63291>
31372
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
903 %! [v, m] = var (sparse (eye (2)), [1, 3]);
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
904 %! assert (issparse (v));
c45fe7ea3153 var.m: Update sparse and diagonal inputs tests for two-outputs (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31371
diff changeset
905 %! assert (issparse (m));
31370
80bd450892b2 var.m: Use bsxfun rather than broadcasting with vector weighting (bug #63291)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31305
diff changeset
906
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
907 ## Test input validation
28886
d8318c12d903 test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents: 28789
diff changeset
908 %!error <Invalid call> var ()
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
909 %!error <Invalid call> var (1, 2, "omitnan", 3)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
910 %!error <Invalid call> var (1, 2, 3, 4)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
911 %!error <Invalid call> var (1, 2, 3, 4, 5)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
912 %!error <Invalid call> var (1, "foo")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
913 %!error <Invalid call> var (1, [], "foo")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
914 %!error <normalization scalar must be either 0 or 1> var ([1 2 3], 2)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
915 %!error <normalization scalar must be either 0 or 1> var ([1 2], 2, "all")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
916 %!error <normalization scalar must be either 0 or 1> var ([1 2],0.5, "all")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
917 %!error <weights must not contain any negative values> var (1, -1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
918 %!error <weights must not contain any negative values> var (1, [1 -1])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
919 %!error <weights must not contain any negative values> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
920 %! var ([1 2 3], [1 -1 0])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
921 %!error <X must be a numeric vector or matrix> var ({1:5})
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
922 %!error <X must be a numeric vector or matrix> var ("char")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
923 %!error <X must be a numeric vector or matrix> var (['A'; 'B'])
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
924 %!error <DIM must be a positive integer> var (1, [], ones (2,2))
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
925 %!error <DIM must be a positive integer> var (1, 0, 1.5)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
926 %!error <DIM must be a positive integer> var (1, [], 0)
30410
bc0de453fb6a extend var and std with dim options (bug #58116) and weights (patch #10103)
Stefano Guidoni <ilguido@users.sf.net>
parents: 29359
diff changeset
927 %!error <DIM must be a positive integer> var (1, [], 1.5)
31868
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
928 %!error <DIM must be a positive integer> var ([1 2 3], [], [-1 1])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
929 %!error <VECDIM must contain non-repeating positive integers> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
930 %! var (repmat ([1:20;6:25], [5 2 6 3]), 0, [1 2 2 2])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
931 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
932 %! var ([1 2], eye (2))
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
933 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
934 %! var ([1 2 3 4], [1 2; 3 4])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
935 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
936 %! var ([1 2 3 4], [1 2; 3 4], 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
937 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
938 %! var ([1 2 3 4], [1 2; 3 4], [2 3])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
939 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
940 %! var (ones (2, 2), [1 2], [1 2])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
941 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
942 %! var ([1 2 3 4; 5 6 7 8], [1 2 1 2 1; 1 2 1 2 1], 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
943 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
944 %! var (repmat ([1:20;6:25], [5 2 6 3]), repmat ([1:20;6:25], [5 2 3]), [2 3])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
945 %!error <weight vector length does not match> var ([1 2 3; 2 3 4], [1 3 4])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
946 %!error <weight vector length does not match> var ([1 2], [1 2 3])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
947 %!error <weight vector length does not match> var (1, [1 2])
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
948 %!error <weight vector length does not match> var ([1 2 3; 2 3 4], [1 3 4], 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
949 %!error <weight vector length does not match> var ([1 2 3; 2 3 4], [1 3], 2)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
950 %!error <weight vector length does not match> var ([1 2], [1 2], 1)
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
951 %!error <'all' flag cannot be used with DIM or VECDIM options> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
952 %! var (1, [], 1, "all")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
953 %!error <weight vector element count does not match X> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
954 %! var ([1 2 3; 2 3 4], [1 3], "all")
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
955 %!error <weight matrix or array does not match X in size> ...
c6eeb8b44c28 Port statistics pkg mean, median, var, & std into core (patch #10314)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 31706
diff changeset
956 %! var (repmat ([1:20;6:25], [5 2 6 3]), repmat ([1:20;6:25], [5 2 3]), "all")