Code for Counting and Lookup
이전 댓글 표시

I have imported a csv file into MATLAB. The number of rows in the table is 81 so there is a long series of '1's and '0's in the single column. I want to check that whenever the consecutive number of rows with '1's is greater than 4, then flag it and note the time stamp corresponding to the first '1' for that consecutive rows of '1'. Do this for every series of 1's appearing successively for more than 4 times i.e obtain the corresponding time. The time stamps are given in the column Var1.
댓글 수: 4
Rik
2020년 10월 4일
What did you try so far? (make sure to post your code as formatted text, and not as a screenshot)
If you want a solution with your own data you should attach your data to your question in a mat file.
Waqas Siddique
2020년 10월 4일
편집: Rik
2020년 10월 5일
Rik
2020년 10월 4일
Did you mean elseif?
You forgot to format the code, and you forgot to account for the length of your variable. What happens when i is equal to the length of the table?
Waqas Siddique
2020년 10월 4일
채택된 답변
추가 답변 (1개)
Image Analyst
2020년 10월 17일
If you have the Image Processing Toolbox, you can also use bwareaopen() and regionprops():
A = [1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1]';
A = bwareaopen(logical(A), 4); % Just extract runs of 4 or longer.
props = regionprops(A, 'PixelIdxList') % Find indexes of all runs of 1's.
% Done! Results are in the table.
% Print out all runs where the length is 4 or more
startingIndexes = zeros(height(props), 1);
for k = 1 : height(props)
startingIndexes(k) = props(k).PixelIdxList(1);
fprintf('Region %d starts at index %d.\n', ...
k, startingIndexes(k));
end
Gives the same results as Adam's solution.
Region 1 starts at index 4.
Region 2 starts at index 20.
Region 3 starts at index 25.
Region 4 starts at index 42.
Region 5 starts at index 48.
If you also want the lengths of the runs in addition to their starting index, just ask regionprops() for 'Area':
props = regionprops(A, 'PixelIdxList', 'Area') % Find lengths and indexes of all runs of 1's.
allLengths = [props.Area]
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!