Mercurial > octave
annotate scripts/set/setdiff.m @ 27237:67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
* NEWS: Announce change to setdiff return values when given "rows" argument.
Announce "legacy" flag.
* setdiff.m Add new calling form and explanation of "legacy" option to
docstring. Allow up to 4 inputs in input validation. Check for "legacy"
in input options and set variable optlegacy. Set variable isrowvec based
on optlegacy and orientation of inputs. Add BIST tests for "rows" and "legacy"
inputs.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 11 Jul 2019 15:29:38 -0700 |
parents | 00f796120a6d |
children | 6525b3fe3cf9 |
rev | line source |
---|---|
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25694
diff
changeset
|
1 ## Copyright (C) 2000-2019 Paul Kienzle |
11523 | 2 ## Copyright (C) 2008-2009 Jaroslav Hajek |
5178 | 3 ## |
5181 | 4 ## This file is part of Octave. |
5178 | 5 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23573
diff
changeset
|
6 ## Octave is free software: you can redistribute it and/or modify it |
5181 | 7 ## 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:
23573
diff
changeset
|
8 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
9 ## (at your option) any later version. |
5181 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
14 ## GNU General Public License for more details. |
5178 | 15 ## |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## 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:
23573
diff
changeset
|
18 ## <https://www.gnu.org/licenses/>. |
5178 | 19 |
20 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
21 ## @deftypefn {} {@var{c} =} setdiff (@var{a}, @var{b}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
22 ## @deftypefnx {} {@var{c} =} setdiff (@var{a}, @var{b}, "rows") |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
23 ## @deftypefnx {} {@var{c} =} setdiff (@dots{}, "legacy") |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
24 ## @deftypefnx {} {[@var{c}, @var{ia}] =} setdiff (@dots{}) |
19974
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
25 ## Return the unique elements in @var{a} that are not in @var{b} sorted in |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
26 ## ascending order. |
5786 | 27 ## |
25694
1fa7459a8697
setdiff.m: Fix typo in documentation (bug #54393).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
28 ## If @var{a} is a row vector return a row vector; Otherwise, return a |
20160
03b9d17a2d95
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19974
diff
changeset
|
29 ## column vector. The inputs may also be cell arrays of strings. |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
30 ## |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19003
diff
changeset
|
31 ## If the optional input @qcode{"rows"} is given then return the rows in |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
32 ## @var{a} that are not in @var{b}. The inputs must be 2-D matrices to use |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
33 ## this option. |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
34 ## |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
35 ## If requested, return the index vector @var{ia} such that |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
36 ## @code{@var{c} = @var{a}(@var{ia})}. |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
37 ## |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
38 ## Programming Note: The input flag @qcode{"legacy"} changes the algorithm |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
39 ## to be compatible with @sc{matlab} releases prior to R2012b. |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
40 ## |
5642 | 41 ## @seealso{unique, union, intersect, setxor, ismember} |
5178 | 42 ## @end deftypefn |
43 | |
5181 | 44 ## Author: Paul Kienzle |
45 ## Adapted-by: jwe | |
46 | |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
47 function [c, ia] = setdiff (a, b, varargin) |
5786 | 48 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
49 if (nargin < 2 || nargin > 4) |
6046 | 50 print_usage (); |
5786 | 51 endif |
5181 | 52 |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
53 [a, b] = validsetargs ("setdiff", a, b, varargin{:}); |
6385 | 54 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
55 by_rows = any (strcmp ("rows", varargin)); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
56 optlegacy = any (strcmp ("legacy", varargin)); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
57 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
58 if (optlegacy) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
59 isrowvec = ! iscolumn (a) || ! iscolumn (b); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
60 else |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
61 isrowvec = isrow (a); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
62 endif |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
63 |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
64 if (by_rows) |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
65 if (nargout > 1) |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
66 [c, ia] = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
67 else |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
68 c = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
69 endif |
5786 | 70 if (! isempty (c) && ! isempty (b)) |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
71 ## Form A and B into combined set. |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
72 b = unique (b, varargin{:}); |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
73 [tmp, idx] = sortrows ([c; b]); |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
74 ## Eliminate those elements of A that are the same as in B. |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
75 dups = find (all (tmp(1:end-1,:) == tmp(2:end,:), 2)); |
6386 | 76 c(idx(dups),:) = []; |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
77 if (nargout > 1) |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
78 ia(idx(dups),:) = []; |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
79 endif |
5786 | 80 endif |
81 else | |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
82 if (nargout > 1) |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
83 [c, ia] = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
84 else |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
85 c = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
86 endif |
5786 | 87 if (! isempty (c) && ! isempty (b)) |
88 ## Form a and b into combined set. | |
89 b = unique (b); | |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
90 [tmp, idx] = sort ([c(:); b(:)]); |
5786 | 91 ## Eliminate those elements of a that are the same as in b. |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
92 if (iscellstr (tmp)) |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
93 dups = find (strcmp (tmp(1:end-1), tmp(2:end))); |
6385 | 94 else |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
95 dups = find (tmp(1:end-1) == tmp(2:end)); |
6385 | 96 endif |
6386 | 97 c(idx(dups)) = []; |
18843
30d8501a857a
setdiff.m: Orient output (row/column) the same as Matlab (bug #42577).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
98 ## Reshape if necessary for Matlab compatibility. |
19974
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
99 if (isrowvec) |
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
100 c = c(:).'; |
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
101 else |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
102 c = c(:); |
5786 | 103 endif |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
104 if (nargout > 1) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
105 ia(idx(dups)) = []; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
106 if (optlegacy && isrowvec) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
107 ia = ia(:).'; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
108 endif |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
109 endif |
5178 | 110 endif |
111 endif | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
112 |
5178 | 113 endfunction |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
114 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
115 |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
116 %!assert (setdiff (["bb";"zz";"bb";"zz"], ["bb";"cc";"bb"], "rows"), "zz") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
117 %!assert (setdiff (["b";"z";"b";"z"], ["b";"c";"b"], "rows"), "z") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
118 %!assert (setdiff (["b";"z";"b";"z"], ["b";"c";"b"]), "z") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
119 %!assert (setdiff ([1, 1; 2, 2; 3, 3; 4, 4], [1, 1; 2, 2; 4, 4], "rows"), [3 3]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
120 %!assert (setdiff ([1; 2; 3; 4], [1; 2; 4], "rows"), 3) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
121 %!assert (setdiff ([1, 2; 3, 4], [1, 2; 3, 6], "rows"), [3, 4]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
122 %!assert (setdiff ({"one","two";"three","four"}, {"one","two";"three","six"}), {"four"}) |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
123 |
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
124 %!test |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
125 %! a = [3, 1, 4, 1, 5]; |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
126 %! b = [1, 2, 3, 4]; |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
127 %! [c, ia] = setdiff (a, b'); |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
128 %! assert (c, [5]); |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
129 %! assert (c, a(ia)); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
130 |
22489
93ea313301f9
test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
131 ## Test output orientation compatibility |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
132 %!assert <*42577> (setdiff ([1:5], 2), [1,3,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
133 %!assert <*42577> (setdiff ([1:5]', 2), [1;3;4;5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
134 %!assert <*42577> (setdiff ([1:5], [2:3]), [1,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
135 %!assert <*42577> (setdiff ([1:5], [2:3]'), [1,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
136 %!assert <*42577> (setdiff ([1:5]', [2:3]), [1;4;5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
137 %!assert <*42577> (setdiff ([1:5]', [2:3]'), [1;4;5]) |
18843
30d8501a857a
setdiff.m: Orient output (row/column) the same as Matlab (bug #42577).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
138 |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
139 %!test |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
140 %! a = rand (3,3,3); |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
141 %! b = a(1); |
19974
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
142 %! assert (setdiff (a, b), sort (a(2:end)')); |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
143 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
144 ## Test "rows" compatibility |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
145 %!test |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
146 %! a = [7 9 7; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
147 %! b = [0 0 0; 5 5 5]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
148 %! [c, ia] = setdiff (a, b, "rows"); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
149 %! assert (c, [1, 4 ,5; 7, 9 7]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
150 %! assert (ia, [5; 1]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
151 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
152 ## Test "legacy" option |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
153 %!test |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
154 %! a = [3, 6, 2, 1, 5, 1, 1]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
155 %! b = [2, 4, 6]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
156 %! [c, ia] = setdiff (a, b); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
157 %! assert (c, [1, 3, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
158 %! assert (ia, [4; 1; 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
159 %! [c, ia] = setdiff (a, b, "legacy"); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
160 %! assert (c, [1, 3, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
161 %! assert (ia, [7, 1, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
162 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
163 ## "legacy" + "rows" compatibility |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
164 %!test |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
165 %! a = [7 9 7; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
166 %! b = [0 0 0; 5 5 5]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
167 %! [c, ia] = setdiff (a, b, "rows", "legacy"); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
168 %! assert (c, [1, 4 ,5; 7, 9 7]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
169 %! assert (ia, [5; 3]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
170 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
171 ## Output orientation with "legacy" option |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
172 %!assert (size (setdiff ([1:5], [2:3], "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
173 %!assert (size (setdiff ([1:5]', [2:3], "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
174 %!assert (size (setdiff ([1:5], [2:3]', "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
175 %!assert (size (setdiff ([1:5]', [2:3]', "legacy")), [3, 1]) |