2015-11-13 4 views
1

Предположим, у меня есть вектор, который содержит числа между 1..100, а затем я произвольно генерирую некоторое число (предположим, что пять элементов и случайных элементов - [3 5 45 66 77]. Тогда я хочу исключить этот элемент из своих данных.Исключить некоторые данные из вектора

data = [1..100] 
blocklistitems=[3 5 45 66 77] 
cleandata = data exclude blocklist 

Как можно исключить некоторые данные из вектора в Matlab?

ответ

6
data = [1..100] 
blocklistitems=[3 5 45 66 77] 
data(blocklistitems)=[]; %// completely removes, reduces length of array 
data(blocklistitems)=nan; %// sets to nan 

Используя индексацию!

Судя по вашему мнению, я считаю, что ваши данные не так просты, как вы представляете в своем ответе, поскольку в этом случае путь индексирования является самым быстрым на сегодняшний день. Принимая @Divakar's comment используя setdiff то же самое может быть достигнута за непоследовательные целые массивы:

C = setdiff(data,blocklistitems); 
+0

после некоторых исследований я обнаружил, используя 'setdiff' является лучшим решением, пожалуйста, предоставьте это тоже в своем ответе, пока я сделать это в качестве приемлемого ответа. – zhilevan

+0

@Adriaan Просто добавьте 'setdiff' в него как другой подход! :) – Divakar

Смежные вопросы