2012-02-02 54 views
1

我不能找出为什么这个代码位是不工作:查找其中矢量的差大于1

我有一个矢量Ĵ这样

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

我试图做

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

这应该给我的[2,5,7]权J1?由于某种原因,它给了我一个j1 [1]或[0]

任何帮助将不胜感激,也我不绑定使用查找。我只需要j不连续点的指数,即对于j我发布它应该告诉我它从1,2跳到4和从4跳到13,14等。

+0

首先,因为找到它的行甚至不是有效的matlab语法,我们该如何回答?注意parens不匹配。 – 2012-02-02 18:08:08

回答

3

你可以完成你想在一个更简单的方法:

indexes = find(diff(j) > 1) 

关于你的代码:

  1. find进行矢量化,无需使用for循环
  2. 你不断地重新分配j1。相反,你可以做j1(end+1) = ..