2013-02-13 3 views
0

У нас есть массив значений, и мы хотели бы создать другой массив, значения которого не указаны в первом.Дополнительный массив Matlab

Пример:

load('internet.mat') 

Первый столбец содержит значения в мегабайтах, мы думали, в чем-то вроде:

MB_no = setdiff(v, internet(:,1)) 

, где V представляет собой 0 вектор, длина которого равна числу строк в internet.mat. Но это просто не работает.

Итак, как мы это сделаем?

+0

Что находится в v? Как вы создали v? Также почему V должен иметь такое же количество элементов, как и Интернет (:, 1)? Пожалуйста, дайте небольшой пример набора данных Интернета (:, 1) и v – Dan

+0

. Я думаю, что вышеупомянутый человек неправильно понял использование 'setdiff'. Если положить вектор нулей и (скажем) 1-й вектор в 'setdiff', то 1-й вектор не будет удален из исходных данных. Вы должны прочитать функцию help [здесь] (http://www.mathworks.com/help/matlab/ref/setdiff.html) –

+0

Вы описали, что не должно быть в новом массиве, пожалуйста, также опишите, что должно быть в новый массив. –

ответ

0

Кажется, что вы не хотите первую колонку. Вы можете просто сделать:

MB_no=internet(:,2:end); 
1

Вы должны указать диапазон возможных значений для определения того, что значения не internet. Скажем, диапазон v = 1:10, тогда setdiff(v,internet(:,1)) предоставит вам значения в 1:10, которые не находятся в первом столбце internet.

0

предполагая internet(:,1) имеет только положительные целые числа, и вы хотите найти, которые являются целыми числами в [1,...,max(internet(:,1))], которые делают не появляются в этом диапазоне вы можете просто сделать

app = []; 
app(internet(:,1)) = 1; 
MB_no = find(app == 0); 

Это несколько напоминает ведро рода.

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