Asked by Locks
on 17 Mar 2013

Hi,

how am I able to loop through a coulmn and get as the output the numbers of rowselement between the first and the next element which is equal to the first element. Here is an example, if this vector:

1

2

3

4

5

7

9

2

1

5

6

8

9

2

4

5

6

now I would like to loop through the column and display the number of elements between the two numbers which are equal.

I tried to use something like this: for i:numel(matrix_call)

for n:

if matrix(i,2)==matrix(i+n,2)

but I am not sure how to do that.

The output for the example I mentioned above should be a new vector which displays in which row the next element, which is equal to the one we are looking at, is following, such as:

vector:

9 (row in which the one is occuring for the second time)

8 (in row 8 there is the number "2" for the second time)

NaN (there is no second number "3")

15 (number "4" occcurs in line 15 for the second time)

and so on

*No products are associated with this question.*

Answer by Azzi Abdelmalek
on 17 Mar 2013

Edited by Azzi Abdelmalek
on 17 Mar 2013

Accepted answer

This gives the number of element between two consecutive same numbers.

**EDIT**

A=[1 2 3 4 5 7 9 2 1 1 5 6 8 9 2 4 5 6]' m=numel(A); out=nan(1,m); numb=out; for k=1:m B=A(k:end); idx=find(B==B(1),2); n=numel(idx); if n>1 out(k)=idx(2)-idx(1)+k; numb(k)=numel(unique(B(idx(1)+1:idx(2)-1))); end end [A out' numb']

Show 15 older comments

Azzi Abdelmalek
on 17 Mar 2013

Answer by Azzi Abdelmalek
on 17 Mar 2013

A=[1 2 3 4 5 7 9 2 1 5 6 8 9 2 4 5 6]' for k=1:numel(A) B=A(k:end) idx=find(B==B(1)) n=numel(idx) if n==1 out(k)=nan else out(k)=idx(2)-idx(1)+k end end

Locks
on 17 Mar 2013

Opportunities for recent engineering grads.

## 1 Comment

## Azzi Abdelmalek (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/67543#comment_137067

Is it possible that an element can be repeated more then twice?