Найдите, где разность векторов больше 1 - PullRequest
1 голос
/ 02 февраля 2012

Я не могу понять, почему этот бит кода не работает:

У меня есть такой вектор j

j = [1; 2; 4; 13; 14; 19; 20]

Я пытаюсь сделать

for i=2:7
    j1=find(j(i)==(j(i-1)+1)
end

Это должно дать мне j1 из [2,5,7], верно? По какой-то причине он дает мне j1 либо [1], либо [0]

Любая помощь будет принята с благодарностью, также я не привязан к использованию find. Мне просто нужны индексы j, где есть разрыв, то есть для j, который я разместил, он должен сказать мне, где он скачет с 1,2 до 4 и с 4 до 13,14 и т. Д.

1 Ответ

3 голосов
/ 02 февраля 2012

Вы можете сделать то, что хотите, гораздо проще:

indexes = find( diff(j) > 1)

Относительно вашего кода:

  1. find может быть векторизовано, нет необходимости использовать for loop
  2. Вы продолжаете переназначать j1. Вместо этого вы можете сделать j1(end+1) = ..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...