フィルターのクリア

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

5 ビュー (過去 30 日間)
Omar B.
Omar B. 2021 年 6 月 15 日
コメント済み: Omar B. 2021 年 6 月 15 日
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 件のコメント
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 日
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.
  1 件のコメント
Omar B.
Omar B. 2021 年 6 月 15 日
Thank you so much.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by