Как уже упоминалось, это, вероятно, версия выпуск MATLAB. Поведение setdiff
изменилось в последних версиях, а online documentation охватывает только последний выпуск 2013 года MATLAB, так что это может быть возможной причиной вашего замешательства.
При этом документация для предыдущих выпусков MATLAB составляет also available online (обратите внимание, что для этого требуется учетная запись MathWorks). В любом случае, ваш MATLAB, кажется, старшее выполнение команды setdiff
, и вы можете убедиться в том, что с помощью:
help setdiff
Во всяком случае, поведение старой реализации setdiff
похоже на поведение новой реализации когда флаг setOrder установлен в 'sorted'
. Если вы хотите, чтобы имитировать поведение, когда флаг SetOrder установлен в 'stable'
, вы можете использовать ismember
вместо этого, например:
A = [4 1 3 2];
B = [2 1];
C = A(~ismember(A, B))
, который дает:
C =
4 3
, пожалуйста, проверьте свою версию matlab. эти флаги были введены совсем недавно. – Shai