How to count numbers considering all consecutives as one??

조회 수: 1 (최근 30일)
Mohammad
Mohammad 2013년 1월 20일
Hi, I need to count some numbers like: Data=2, 3, 4, 7,8 9, 10, 20,25,27; Now, counting should be: 2,3,4=1; 7,8,9,10=1; 20=1; 25=1; 27=1; Total count=5 (1+1+1+1+1) i.e. consecutive numbers should be count as one together and any individual value should be one. Any help regarding matlab programming would be highly appreciated. Thanks in advance. Badrul

채택된 답변

Shashank Prasanna
Shashank Prasanna 2013년 1월 20일
편집: Shashank Prasanna 2013년 1월 20일
Data=[2, 3, 4, 7,8 9, 10, 20,25,27];
sum = 1; % The first set is counted.
for i = 2:length(Data)
if Data(i)~=Data(i-1)+1
%Data(i)
sum=sum+1;
end
end
disp(sum)
  댓글 수: 3
Azzi Abdelmalek
Azzi Abdelmalek 2013년 1월 20일
Don't use sum and i as variables. sum is the function that sums the elements of an array, and i is used to represent complex numbers
Shashank Prasanna
Shashank Prasanna 2013년 1월 20일
Azzi, Its perfectly fine to use them since MATLAB gives the highest precedence to variables before function names. Avoid them if you plan to use these function in your program or just clear the variables right before you want to use the function:
However as you mentioned it is safer to avoid using them.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Cedric
Cedric 2013년 1월 20일
편집: Cedric 2013년 1월 20일
Here is a funny way to achieve this:
>> sum(diff(Data)>1)+1
EDIT: see my comment after Azzi's remark.
  댓글 수: 6
Azzi Abdelmalek
Azzi Abdelmalek 2013년 1월 20일
It still dont work. Look at this example.
Data=[1 2 3 4 7 8 7 6 2 1]
I suggest
sum(diff(Data)~=0 & diff(Data)~=1)+1
Cedric
Cedric 2013년 1월 20일
Well, the OP will pick the one that matches his requirements I guess; I don't test Data(i+1)==Data(i)+1 (consec. elements are consec. integers) in my solutions, but Data(i)==Data(j)+1 for |i-j|=1 (ordered neighbors are consec. integers).

댓글을 달려면 로그인하십시오.


Roger Stafford
Roger Stafford 2013년 1월 20일
count = sum([true,diff(data)~=0]);

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by