Mercurial > octave
annotate scripts/statistics/mode.m @ 33617:ec2635a02328 bytecode-interpreter tip
maint: Merge default to bytecode-interpreter.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Tue, 21 May 2024 18:29:03 +0200 |
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:
32501
diff
changeset
|
3 ## Copyright (C) 2007-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/>. |
6863 | 7 ## |
8 ## This file is part of Octave. | |
9 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
6863 | 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:
23220
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. |
6863 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
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. |
6863 | 19 ## |
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:
23220
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 ######################################################################## |
6863 | 25 |
26 ## -*- texinfo -*- | |
30875
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
27 ## @deftypefn {} {@var{m} =} mode (@var{x}) |
5d3faba0342e
doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
28 ## @deftypefnx {} {@var{m} =} mode (@var{x}, @var{dim}) |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20803
diff
changeset
|
29 ## @deftypefnx {} {[@var{m}, @var{f}, @var{c}] =} mode (@dots{}) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
30 ## Compute the most frequently occurring value in a dataset (mode). |
20174
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
31 ## |
10687
a8ce6bdecce5
Improve documentation strings.
Rik <octave@nomad.inbox5.com>
parents:
10669
diff
changeset
|
32 ## @code{mode} determines the frequency of values along the first non-singleton |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
33 ## dimension and returns the value with the highest frequency. If two, or |
10687
a8ce6bdecce5
Improve documentation strings.
Rik <octave@nomad.inbox5.com>
parents:
10669
diff
changeset
|
34 ## more, values have the same frequency @code{mode} returns the smallest. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
35 ## |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
36 ## If the optional argument @var{dim} is given, operate along this dimension. |
6863 | 37 ## |
10687
a8ce6bdecce5
Improve documentation strings.
Rik <octave@nomad.inbox5.com>
parents:
10669
diff
changeset
|
38 ## The return variable @var{f} is the number of occurrences of the mode in |
20174
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
39 ## the dataset. |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
40 ## |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
41 ## The cell array @var{c} contains all of the elements with the maximum |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
42 ## frequency. |
12575
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
43 ## @seealso{mean, median} |
6863 | 44 ## @end deftypefn |
45 | |
46 function [m, f, c] = mode (x, dim) | |
47 | |
28789
28de41192f3c
Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
48 if (nargin < 1) |
6863 | 49 print_usage (); |
50 endif | |
51 | |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
52 if (! (isnumeric (x) || islogical (x))) |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
53 error ("mode: X must be a numeric vector or matrix"); |
10669
cab3b148d4e4
Improve validation of input arguments for base statistics functions.
Rik <octave@nomad.inbox5.com>
parents:
9245
diff
changeset
|
54 endif |
cab3b148d4e4
Improve validation of input arguments for base statistics functions.
Rik <octave@nomad.inbox5.com>
parents:
9245
diff
changeset
|
55 |
6863 | 56 nd = ndims (x); |
57 sz = size (x); | |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
58 if (nargin < 2) |
6863 | 59 ## Find the first non-singleton dimension. |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
60 (dim = find (sz != 1, 1)) || (dim = 1); |
6863 | 61 else |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
62 if (! (isscalar (dim) && dim > 0 && rem (dim, 1) == 0)) |
10669
cab3b148d4e4
Improve validation of input arguments for base statistics functions.
Rik <octave@nomad.inbox5.com>
parents:
9245
diff
changeset
|
63 error ("mode: DIM must be an integer and a valid dimension"); |
6863 | 64 endif |
65 endif | |
66 | |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
67 if (isempty (x)) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
68 ## Empty x produces NaN for m, 0 for f, , but m, f and c |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
69 ## shape depends on size of x. |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
70 if ((nargin == 1) && (nd == 2) && (sz == [0 0])) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
71 f = 0; # f always a double even if x is single. |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
72 if (isa (x, "single")) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
73 m = NaN ("single"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
74 c = {(NaN (0, 1, "single"))}; |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
75 else |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
76 m = NaN; |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
77 c = {(NaN (0, 1))}; |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
78 endif |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
79 else |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
80 sz(dim) = 1; |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
81 f = zeros (sz); # f always a double even if x is single. |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
82 c = cell (sz); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
83 if (isa (x, "single")) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
84 m = (NaN (sz, "single")); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
85 c(:) = NaN (1, 0, "single"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
86 else |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
87 m = NaN (sz); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
88 c(:) = NaN (1, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
89 endif |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
90 endif |
32501
5fac69033835
maint: Style check m-files in scripts/ directory before 9.1 release.
Rik <rik@octave.org>
parents:
32426
diff
changeset
|
91 return; |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
92 endif |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
93 |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
94 if (dim > nd || sz(dim) == 1) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
95 ## Special case of mode over singleton dimension. |
21364
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
96 m = x; |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
97 f = ones (size (x)); |
21604
d7a268e68e69
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
21364
diff
changeset
|
98 c = num2cell (x); |
21364
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
99 return; |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
100 endif |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
101 |
6863 | 102 sz2 = sz; |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
103 sz2(dim) = 1; |
6863 | 104 sz3 = ones (1, nd); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
105 sz3(dim) = sz(dim); |
6863 | 106 |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
107 if (issparse (x)) |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
108 t2 = sparse (sz(1), sz(2)); |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
109 else |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
110 t2 = zeros (sz); |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
111 endif |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
112 |
6863 | 113 if (dim != 1) |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
114 perm = [dim, 1:dim-1, dim+1:nd]; |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
115 t2 = permute (t2, perm); |
6863 | 116 endif |
117 | |
118 xs = sort (x, dim); | |
119 t = cat (dim, true (sz2), diff (xs, 1, dim) != 0); | |
120 | |
121 if (dim != 1) | |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
122 t2(permute (t != 0, perm)) = diff ([find(permute (t, perm))(:); prod(sz)+1]); |
6863 | 123 f = max (ipermute (t2, perm), [], dim); |
124 xs = permute (xs, perm); | |
125 else | |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
126 t2(t) = diff ([find(t)(:); prod(sz)+1]); |
6863 | 127 f = max (t2, [], dim); |
128 endif | |
129 | |
130 c = cell (sz2); | |
7287 | 131 if (issparse (x)) |
132 m = sparse (sz2(1), sz2(2)); | |
133 else | |
12585
4e32a1bb9096
mode.m, quantile.m: Return output of same class as input.
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
134 m = zeros (sz2, class (x)); |
7287 | 135 endif |
6863 | 136 for i = 1 : prod (sz2) |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
137 c{i} = xs(t2(:, i) == f(i), i); |
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
138 m(i) = c{i}(1); |
6863 | 139 endfor |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
140 |
6863 | 141 endfunction |
142 | |
12656
6b2f14af2360
Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents:
12585
diff
changeset
|
143 |
6863 | 144 %!test |
145 %! [m, f, c] = mode (toeplitz (1:5)); | |
146 %! assert (m, [1,2,2,2,1]); | |
147 %! assert (f, [1,2,2,2,1]); | |
148 %! assert (c, {[1;2;3;4;5],[2],[2;3],[2],[1;2;3;4;5]}); | |
149 %!test | |
150 %! [m, f, c] = mode (toeplitz (1:5), 2); | |
151 %! assert (m, [1;2;2;2;1]); | |
152 %! assert (f, [1;2;2;2;1]); | |
153 %! assert (c, {[1;2;3;4;5];[2];[2;3];[2];[1;2;3;4;5]}); | |
154 %!test | |
155 %! a = sprandn (32, 32, 0.05); | |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20174
diff
changeset
|
156 %! sp0 = sparse (0); |
6863 | 157 %! [m, f, c] = mode (a); |
158 %! [m2, f2, c2] = mode (full (a)); | |
7287 | 159 %! assert (m, sparse (m2)); |
160 %! assert (f, sparse (f2)); | |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20174
diff
changeset
|
161 %! c_exp(1:length (a)) = { sp0 }; |
12930
7bd29d875af1
mode.m: Eliminate cellfun usage in assert tests
Rik <octave@nomad.inbox5.com>
parents:
12656
diff
changeset
|
162 %! assert (c ,c_exp); |
21364
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
163 %! assert (c2,c_exp); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
164 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
165 %!assert (mode ([2,3,1,2,3,4],1),[2,3,1,2,3,4]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
166 %!assert (mode ([2,3,1,2,3,4],2),2) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
167 %!assert (mode ([2,3,1,2,3,4]),2) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
168 %!assert (mode (single ([2,3,1,2,3,4])), single (2)) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
169 %!assert (mode (int8 ([2,3,1,2,3,4])), int8 (2)) |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
170 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
171 %!assert (mode ([2;3;1;2;3;4],1),2) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
172 %!assert (mode ([2;3;1;2;3;4],2),[2;3;1;2;3;4]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
173 %!assert (mode ([2;3;1;2;3;4]),2) |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
174 |
21364
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
175 %!test |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
176 %! x = magic (3); |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
177 %! [m, f, c] = mode (x, 3); |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
178 %! assert (m, x); |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
179 %! assert (f, ones (3,3)); |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
180 %! assert (c, num2cell (x)); |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
181 |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
182 %!test |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
183 %! x = single (magic (3)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
184 %! [m, f, c] = mode (x, 3); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
185 %! assert (class (m), "single"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
186 %! assert (class (f), "double"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
187 %! assert (class (c), "cell"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
188 %! assert (class (c(1)), "cell"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
189 %! assert (class (c{1}), "single"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
190 |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
191 %!shared x |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
192 %! x(:,:,1) = toeplitz (1:3); |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
193 %! x(:,:,2) = circshift (toeplitz (1:3), 1); |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
194 %! x(:,:,3) = circshift (toeplitz (1:3), 2); |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
195 %!test |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
196 %! [m, f, c] = mode (x, 1); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
197 %! assert (reshape (m, [3, 3]), [1 1 1; 2 2 2; 1 1 1]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
198 %! assert (reshape (f, [3, 3]), [1 1 1; 2 2 2; 1 1 1]); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
199 %! c = reshape (c, [3, 3]); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
200 %! assert (c{1}, [1; 2; 3]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
201 %! assert (c{2}, 2); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
202 %! assert (c{3}, [1; 2; 3]); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
203 %!test |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
204 %! [m, f, c] = mode (x, 2); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
205 %! assert (reshape (m, [3, 3]), [1 1 2; 2 1 1; 1 2 1]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
206 %! assert (reshape (f, [3, 3]), [1 1 2; 2 1 1; 1 2 1]); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
207 %! c = reshape (c, [3, 3]); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
208 %! assert (c{1}, [1; 2; 3]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
209 %! assert (c{2}, 2); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
210 %! assert (c{3}, [1; 2; 3]); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
211 %!test |
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
212 %! [m, f, c] = mode (x, 3); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
213 %! assert (reshape (m, [3, 3]), [1 2 1; 1 2 1; 1 2 1]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
214 %! assert (reshape (f, [3, 3]), [1 2 1; 1 2 1; 1 2 1]); |
7606
704b7a1098d0
Fix for mode.m NDArrays and row vectors
David Bateman <dbateman@free.fr>
parents:
7287
diff
changeset
|
215 %! c = reshape (c, [3, 3]); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
216 %! assert (c{1}, [1; 2; 3]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
217 %! assert (c{2}, [1; 2; 3]); |
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
218 %! assert (c{3}, [1; 2; 3]); |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
219 %!shared ## Clear shared to prevent variable echo for any later test failures |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
220 |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
221 ## Test empty inputs |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
222 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
223 %! [m, f, c] = mode ([]); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
224 %! assert (m, NaN); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
225 %! assert (f, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
226 %! assert (c, {(NaN (0, 1))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
227 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
228 %! [m, f, c] = mode (single ([])); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
229 %! assert (class (m), "single"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
230 %! assert (class (f), "double"); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
231 %! assert (c, {(single (NaN (0, 1)))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
232 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
233 %! [m, f, c] = mode ([], 1); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
234 %! assert (m, NaN (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
235 %! assert (f, zeros (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
236 %! assert (c, cell (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
237 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
238 %! [m, f, c] = mode ([], 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
239 %! assert (m, NaN (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
240 %! assert (f, zeros (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
241 %! assert (c, cell(0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
242 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
243 %! [m, f, c] = mode ([], 3); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
244 %! assert (m, []); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
245 %! assert (f, []); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
246 %! assert (c, cell (0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
247 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
248 %! [m, f, c] = mode (ones (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
249 %! assert (m, NaN); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
250 %! assert (f, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
251 %! assert (c, {(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
252 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
253 %! [m, f, c] = mode (ones (0, 1), 1); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
254 %! assert (m, NaN); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
255 %! assert (f, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
256 %! assert (c, {(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
257 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
258 %! [m, f, c] = mode (ones (0, 1), 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
259 %! assert (m, NaN (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
260 %! assert (f, zeros (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
261 %! assert (c, cell (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
262 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
263 %! [m, f, c] = mode (ones (0, 1), 3); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
264 %! assert (m, NaN (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
265 %! assert (f, zeros (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
266 %! assert (c, cell (0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
267 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
268 %! [m, f, c] = mode (ones (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
269 %! assert (m, NaN); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
270 %! assert (f, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
271 %! assert (c, {(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
272 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
273 %! [m, f, c] = mode (ones (1, 0), 1); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
274 %! assert (m, NaN (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
275 %! assert (f, zeros (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
276 %! assert (c, cell (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
277 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
278 %! [m, f, c] = mode (ones (1, 0), 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
279 %! assert (m, NaN); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
280 %! assert (f, 0); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
281 %! assert (c, {(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
282 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
283 %! [m, f, c] = mode (ones (1, 0), 3); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
284 %! assert (m, NaN (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
285 %! assert (f, zeros (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
286 %! assert (c, cell (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
287 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
288 %! [m, f, c] = mode (ones (0, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
289 %! assert (m, NaN (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
290 %! assert (f, zeros (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
291 %! assert (c, cell (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
292 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
293 %! [m, f, c] = mode (ones (0, 0, 0), 1); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
294 %! assert (m, NaN (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
295 %! assert (f, zeros (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
296 %! assert (c, cell (1, 0, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
297 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
298 %! [m, f, c] = mode (ones (0, 0, 0), 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
299 %! assert (m, NaN (0, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
300 %! assert (f, zeros (0, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
301 %! assert (c, cell (0, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
302 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
303 %! [m, f, c] = mode (ones (0, 0, 0), 3); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
304 %! assert (m, NaN (0, 0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
305 %! assert (f, zeros (0, 0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
306 %! assert (c, cell (0, 0, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
307 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
308 %! [m, f, c] = mode (ones (1, 5, 0), 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
309 %! assert (m, NaN (1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
310 %! assert (f, zeros (1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
311 %! assert (c, cell (1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
312 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
313 %! [m, f, c] = mode (ones (5, 1, 0), 2); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
314 %! assert (m, NaN (5, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
315 %! assert (f, zeros (5, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
316 %! assert (c, cell (5, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
317 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
318 %! [m, f, c] = mode (ones (2, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
319 %! assert (m, NaN (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
320 %! assert (f, zeros (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
321 %! assert (c, cell (1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
322 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
323 %! [m, f, c] = mode (ones (0, 2)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
324 %! assert (m, NaN (1, 2)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
325 %! assert (f, zeros (1, 2)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
326 %! assert (c, {(NaN (1, 0)),(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
327 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
328 %! [m, f, c] = mode (ones (1, 1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
329 %! assert (m, NaN (1, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
330 %! assert (f, zeros (1, 1)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
331 %! assert (c, {(NaN (1, 0))}); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
332 %!test <*48690> |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
333 %! [m, f, c] = mode (ones (1, 1, 1, 0), 1); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
334 %! assert (m, NaN (1, 1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
335 %! assert (f, zeros (1, 1, 1, 0)); |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
336 %! assert (c, cell (1,1,1,0)); |
11436
e151e23f73bc
Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
337 |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
338 ## Test input validation |
28896
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
339 %!error <Invalid call> mode () |
21364
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
340 %!error <X must be a numeric> mode ({1 2 3}) |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
341 %!error <DIM must be an integer> mode (1, ones (2,2)) |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
342 %!error <DIM must be an integer> mode (1, 1.5) |
03ff9371596b
mode.m: Allow operation over non-existent dimension (bug #33523).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
343 %!error <DIM must be .* a valid dimension> mode (1, 0) |
31887
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
344 %!error <DIM must be .* a valid dimension> mode (1, -1) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
345 %!error <DIM must be .* a valid dimension> mode (1, -1.5) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
346 %!error <DIM must be .* a valid dimension> mode (1, Inf) |
96ed8d1d0c59
mode.m: Emtpy input produces Matlab compatible NaN output (bug #48690)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents:
31706
diff
changeset
|
347 %!error <DIM must be .* a valid dimension> mode (1, NaN) |