6

次のような (7,6) 論理配列があります。

有効なY2_A =

 0     0     0     0     0     0
 0     0     0     0     0     0
 0     0     0     1     0     0
 1     0     0     1     1     0
 1     1     1     0     0     1
 1     1     1     0     1     1
 0     1     1     1     1     1

上記の行列の各列に 3 つの連続する行列があるかどうかを示す (1,6) 論理ベクトル 'contig' を作成したいと考えています。たとえば、この結果は次のようになります。

コンティグ =

[1, 1, 1, 0, 0 ,1];

strfind を試してみましたが、これには 2 つの問題があります。1 つ目は、列の配列であることです (転置はまったく役に立たなかったか、一時的に使用するために多くの余分なコードが必要でした。2 つ目の問題は、それは論理配列です.文字列に変更すると、値はすべてtrueまたはfalseになり、それを機能させようとしても無駄です.列ベクトルを検索して、別の特定の列かどうかを見つける方法はありますか? vector はその中のどこかに存在しますか? 各列で [1; 1; 1] を検索したいです。

ありがとう

4

2 に答える 2

2

理解しやすいはずの方法を次に示します。

idx1=1:end-2
idx2=2:end-1
idx3=3:end

基本的に、これらのインデックスはマトリックスを 3 回シフトします。

あとはそれらを適用するだけです:

any(validY2_A(idx1,:) & validY2_A(idx2,:) & validY2_A(idx3,:))

これは、たとえばループとシフト関数を使用して一般化するのはそれほど難しくありません。

于 2013-04-02T15:26:01.563 に答える