MATLAB Answers

Is there a way to find number of blocks in a matrix?

3 views (last 30 days)
Omar B.
Omar B. on 15 Jun 2021
Commented: Omar B. on 15 Jun 2021
I have a matrix that has 5 blocks along the diagonal and two consecutive blocks overlap in one diagonal element.
How can I compute the number of blocks in MATLAB?
  3 Comments

Sign in to comment.

Accepted Answer

Stephen
Stephen on 15 Jun 2021
Edited: Stephen on 15 Jun 2021
Assuming that the blocks do not contain zeros:
A = [1,2,0,0,0,0,0,0,0;3,4,5,6,0,0,0,0,0;0,7,8,9,0,0,0,0,0;0,1,2,3,4,5,0,0,0;0,0,0,1,2,3,0,0,0;0,0,0,1,2,3,4,5,0;0,0,0,0,0,1,2,3,0;0,0,0,0,0,1,2,3,4;0,0,0,0,0,0,0,1,2]
A = 9×9
1 2 0 0 0 0 0 0 0 3 4 5 6 0 0 0 0 0 0 7 8 9 0 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 1 2 3 4 0 0 0 0 0 0 0 1 2
[R,~] = find(diff(~A,1,1)>0);
N = 1+numel(unique(R))
N = 5
If the blocks can contain zeros, then you will probably need to use some pattern matching.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!