Why does setdiff answer depend on order of arguments?

조회 수: 10 (최근 30일)
Brian Wilson
Brian Wilson 2019년 9월 9일
편집: Stephen23 2019년 9월 10일
>>bob = {'a','b','c'};
>>bill = {'a','b','c', 'd','e'}
As expected,
>>A = setdiff(bill,bob)
A =
'd' 'e'
BUT
>> B = setdiff(bob,bill)
B =
Empty cell array: 1-by-0
WHY??

채택된 답변

Steven Lord
Steven Lord 2019년 9월 9일
Were you expecting the output to contain elements that are only in one of the inputs but not both? That's not what setdiff does. If that is what you want to do, use setxor instead.
  댓글 수: 2
Brian Wilson
Brian Wilson 2019년 9월 10일
Thanks, yes. i was expecting it to tell me the "difference between the sets" i.e., which elements are not in both , but i see now, its computing A \ B.
Stephen23
Stephen23 2019년 9월 10일
편집: Stephen23 2019년 9월 10일
It is worth nothing that MATLAB setdiff follows the standard mathematical definition of "set difference", which is defined as A\B (i.e the elements of A that are not in B):
etc.
The setdiff documentation states "setdiff(A,B) returns the data in A that is not in B"
Although this is the accepted mathematical definition, the term "set difference" is rather ambiguous in common english. It would be nice if it used terms whose meaning was obvious.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

madhan ravi
madhan ravi 2019년 9월 9일
편집: madhan ravi 2019년 9월 9일
bob not in bill (nothing unique all elements of bob belong to bill)
help setdiff
  댓글 수: 1
Brian Wilson
Brian Wilson 2019년 9월 10일
Thanks madhan, I was confusing the functionality with setxor.

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2019년 9월 9일
setdiff implements set subtraction A \ B which is not commutative

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by