私は5x5のブール行列のセットを持っています.1つは以下の例です:
0 1 0 1 1
1 1 1 0 0
1 0 0 1 1
1 1 1 1 0
0 0 0 0 1
そして、接続された一連の 1 ごとに出力する方法が必要です (接続されているとは、1 が左、右、別の 1 の上または下にあることを意味し、対角線はカウントされません) x 軸上で占める長さと長さy 軸を占めます。この行列の EG 左から右にずっと続くものがあるため、x に 5 単位、y に 4 単位です。
1
1 1 1
1 1 1
1 1 1 1
右上隅には、x に 2 つの単位があり、y に 1 つのみのセットもあります。
1 1
右下には、x で 1、y で 1 しか占めないものがあります。
この行列に対して、xmax1=5 ymax1=4、xmax2=2 ymax2=1、xmax3=1 ymax3=1 の行に沿って何かを出力したいと思います。私は正しい行に沿っているいくつかのコードを作成することができましたが、単純な行列に対してのみ機能します。たとえば、接続された 1 のセットが 1 つしかなく、xmax と ymax が単純な直線である場合です。たとえば、次の場合に実行できます。
1 1 1 1 0
0 1 0 0 0
1 1 0 0 0
1 1 0 0 0
0 1 0 0 0
最長の x パスは上を横切る直線であり、最長の y max は下への直線です。ただし、「蛇行」し始めた場合は、次のようになります。
0 0 1 0 0
0 1 1 0 0
0 1 0 0 0
0 1 1 0 0
0 0 1 1 1
ymax=3 と xmax=3 の結果は、最も離れた直線からの実際の長さではなく、最長の直線であるため、この場合は ymax=5 と xmax になります。 =4
私はMatLabを初めて使用し、自分自身を教えようとしているため、機能する多くの方法を考えることができると思いますが、それらを実装する方法を考えることができません. 複数の方法を試しましたが、それらを適切に実装する方法がよくわかりません。
助けてくれてありがとう。