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

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 件のコメント

KSSV
KSSV 2021 年 6 月 15 日
Give us an example.
Omar B.
Omar B. 2021 年 6 月 15 日
As an example:
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]
How can I compute the number of blocks in MATLAB?
Joseph Cheng
Joseph Cheng 2021 年 6 月 15 日
can you explain what you mean by a block?

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2021 年 6 月 15 日
編集済み: Stephen23 2021 年 6 月 15 日

0 投票

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.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeOperating on Diagonal Matrices についてさらに検索

質問済み:

2021 年 6 月 15 日

コメント済み:

2021 年 6 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by