Следующая / предыдущая строка в наборе данных без использования цикла - PullRequest
0 голосов
/ 03 марта 2012

Кто-нибудь имеет представление о том, как обратиться к следующей / предыдущей строке в наборе данных без использования цикла (в MATLAB)?

Я пытаюсь найти строки, в которых значение в одной строке совпадает со значением в том же столбце в предыдущей строке, и сколько раз это было.

Обычно я бы использовал цикл, например: -

for n = 2:100
   if Dataset.Value(n) == Dataset.Value(n-1)
      Dataset.Repeat(n) = 1
   end
end

Но файлы, которые у меня есть, располагаются в десятках тысяч строк, и это занимает слишком много времени, чтобы пройти весь этот путь, так есть ли способ, которым я мог бы сделать это без использования цикла?

Что-то вроде:

Dataset.Repeat(Dataset.Value(current_line) == Dataset.Value(previous_line)) = 1;

Кроме того, что я не думаю, что есть команда previous_line?

Спасибо.

1 Ответ

1 голос
/ 04 марта 2012

Вы можете попробовать использовать команду diff . Что-то вроде

find(diff(Dataset.Value)==0) 

должен давать вам индексы повторяющихся значений (вам может понадобиться добавить 1, чтобы указать на повторяющийся элемент, как в вашем коде).

РЕДАКТИРОВАТЬ: на самом деле я думаю, что вы хотите Dataset.Repeat = [0 diff(Dataset.Value)==0 ];, где конкатенация с 0 должна сдвигаться, чтобы указать второй из повторяющихся элементов, а не первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...