我有兩個數組讓我們說A = [1; 2; 4; 7; 10; 20]; B = [1; 4; 8];查找陣列中不在另一個陣列中的元素
現在我想找到A中不屬於B的元素,即: [2; 7; 10; 20]。我只需要它們的索引,它是A中元素[2; 7; 10; 20]的索引。我如何在matlab中實現它。我可以使用循環和所有。但那不是我想要的。我想要一個優雅的解決方案建議?
我有兩個數組讓我們說A = [1; 2; 4; 7; 10; 20]; B = [1; 4; 8];查找陣列中不在另一個陣列中的元素
現在我想找到A中不屬於B的元素,即: [2; 7; 10; 20]。我只需要它們的索引,它是A中元素[2; 7; 10; 20]的索引。我如何在matlab中實現它。我可以使用循環和所有。但那不是我想要的。我想要一個優雅的解決方案建議?
您可以使用ismember
函數來做到這一點。
A = [1;2;4;7;10;20];
B = [1;4;8];
ismem = ismember(A,B);
會給你
[1 0 1 0 0 0]'
如果你真的需要索引,您可以使用find
。
find(ismem==0)
正如一個提醒,你可以隨時使用邏輯索引像這樣:
A(~ismem)
會給你
[2 7 10 20]'
[TF ,LOC] = ismember(A,S)返回與A相同大小的數組,其中A的元素在集合S中,否則返回0。在LOC中提供匹配的索引,其中包含S中對於S中的每個元素的S中的最高絕對索引,並且如果不存在這樣的索引,則爲0。 – argyris
可能重複的[Matlab陣列操作](http://stackoverflow.com/questions/5802276/matlab-array-operation) –