Mercurial > octave
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 |
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 | 7 ## |
3922 | 8 ## This file is part of Octave. |
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 | 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 | 14 ## |
3922 | 15 ## Octave is distributed in the hope that it will be useful, but |
3200 | 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 | 19 ## |
3200 | 20 ## You should have received a copy of the GNU General Public License |
7016 | 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 | 25 |
3453 | 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 | 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 | 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 | 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 | 79 ## @end table |
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 | 113 ## @end deftypefn |
3426 | 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 | 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 | 129 print_usage (); |
4849 | 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 | 224 endif |
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 | 243 endif |
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 | 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 | 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 | 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 | 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>
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 | 540 endif |
3426 | 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 | 559 endfunction |
9371
56751dfc6ebd
fix var for scalar and empty arguments
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
560 |
30998 | 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 | 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") |