loop through a column and display the number of elements until the same value occcurs
조회 수: 1 (최근 30일)
이전 댓글 표시
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
댓글 수: 1
채택된 답변
Azzi Abdelmalek
2013년 3월 17일
편집: Azzi Abdelmalek
2013년 3월 17일
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']
추가 답변 (1개)
Azzi Abdelmalek
2013년 3월 17일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!