次のベクトルを検討してください。
>> signals
signals =
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
>>exits
exits =
2
10
私がする必要があるのはsignal
、信号の値が変化するまで、exit の各値からマトリックスの 1 を 0 に設定することです。たとえば、ここで、インデックス 2、3、および 4exits=2
のベクトルで 1 を 0 に設定します。signal
signal
これまでに行ったことは、ベクター内で値が変化する場所を特定して、開始インデックスと停止インデックスを特定できるようにすることです。例えば:
>> find(diff(signals)~=0)
ans =
4
8
12
exits=2
これを行うことで、 tosignals=4
とexits=10
toの 1 を 0 に設定する必要があることがわかりsignals=12
ます。しかし、ループなしでこれを行う方法を理解するのに行き詰まっています。
これは少しあいまいかもしれないことを認識しているので、より簡単な例を次に示します。
>> signals
signals =
1
1
1
1
1
0
0
0
1
1
1
>> exit
exit =
3
>> rst=exit:find(diff(signals)~=0)
rst =
3 4 5
signals =
1
1
0
0
0
0
0
0
1
1
1
基本的に、この単純な例を、複数のexit
値と の複数の異なるシーケンスがある場合に一般化しようとしていますsignals
。