필터 지우기
필터 지우기

Binary table - counting bits in rows

조회 수: 4 (최근 30일)
Henry Buck
Henry Buck 2015년 9월 15일
편집: Star Strider 2015년 9월 15일
Hi,
How can I print only the rows that have only two '1' bits in rows? like this one:
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
Thanks, Henry

채택된 답변

Thorsten
Thorsten 2015년 9월 15일
table= dec2bin(0:(2^4-1)) - '0';
Nones = sum(table, 2);
table(Nones==2, :)
  댓글 수: 2
Henry Buck
Henry Buck 2015년 9월 15일
Thanks a lot, Henry
Image Analyst
Image Analyst 2015년 9월 15일
table is a reserved word for a special data type in MATLAB so I would pick another variable name.
When you said "two '1' bits in rows" and gave this "0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0" (just a single row), I thought you meant "two 1's in a row", meaning two 1's that were consecutive/adjacent, so that's what my code did.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2015년 9월 15일
Do you have the Image Processing Toolbox? If so, it's simple to just call regionprops on each row and measure the lengths of all 1 segments. If any of the lengths = 2, then print that row with fprintf(), like this untested code:
for row = 1 : rows
thisRow = m(row, :);
labeledData = bwlabel(thisRow); % Identify each separate segment.
measurements = regionprops(labeledData, 'Area');
allLengths = [measurements.Area];
% See if any of the stretches of 1's are 2 in length
if any(allLengths == 2)
fprintf('%d ', thisRow);
fprintf('\n');
end
end

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by