[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #53924] ismember error with mixed numeric and
From: |
Guillaume |
Subject: |
[Octave-bug-tracker] [bug #53924] ismember error with mixed numeric and char arrays inputs |
Date: |
Fri, 18 May 2018 07:48:42 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 |
Follow-up Comment #1, bug #53924 (project octave):
It seems that when one input is numeric and the other is a char array, Matlab
converts the latter into numeric so I suggest the following fix:
--- a/scripts/set/ismember.m Sun Sep 04 16:09:43 2016 +0100
+++ b/scripts/set/ismember.m Fri May 18 12:45:08 2018 +0100
@@ -108,6 +108,13 @@
a = {a};
endif
+ ## Another Matlab-compatible behavior. See bug #53924.
+ if (isnumeric (a) && ischar (s))
+ s = double (s);
+ elseif (ischar (a) && isnumeric (s))
+ a = double (a);
+ endif
+
[a, s] = validsetargs ("ismember", a, s, varargin{:});
by_rows = nargin == 3;
@@ -165,12 +172,15 @@
%!assert (ismember ("abc", {"abc", "def"}), true)
%!assert (isempty (ismember ([], [1, 2])), true)
%!assert (isempty (ismember ({}, {'a', 'b'})), true)
+%!assert (isempty (ismember ([], 'a')), true)
%!assert (ismember ("", {"abc", "def"}), false)
+%!assert (ismember (1, 'abc'), false)
+%!assert (ismember ('abc', 1), [false false false])
+%!assert (ismember ('abc', 99), [false false true])
%!fail ("ismember ([], {1, 2})")
%!fail ("ismember ({[]}, {1, 2})")
%!fail ("ismember ({}, {1, 2})")
%!fail ("ismember ({1}, {'1', '2'})")
-%!fail ("ismember (1, 'abc')")
%!fail ("ismember ({'1'}, {'1' '2'},'rows')")
%!fail ("ismember ([1 2 3], [5 4 3 1], 'rows')")
%!assert (ismember ({"foo", "bar"}, {"foobar"}), [false false])
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?53924>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/