入力配列の先頭と末尾のゼロを切り捨てようとしています。私のような質問を見てきました:配列の先頭と末尾の0を、存在する場合にのみ切り捨てます。
MATLAB - Remove Leading and Trailing Zeros From a Vector
そして、私の入力配列が実際に起動しなくなるまで、これはゼロで/終了を正常に動作します:
input = [ 1 2 0 3 4 0 0 0 0 ]
これは私の入力配列だった場合、上記の質問に対する答えは、私が必要とする価値を切り捨てるでしょう。
先行/後続のゼロを削除するための簡潔な方法(つまり、 'if'文はありません)が存在するかどうかは保証されていませんか?明確化のため
編集:
は私がゼロ以外のインデックスの配列を取得するにはfind()
機能を使用して、ような何かを行うことができることを知っている:私は持っているので、
indexes = find(input)
trimmed_input = input(indexes(1):indexes(end))
しかし、問題は、発生します入力配列に後続/先行ゼロがあることを保証するものではなく、ゼロ以外の値の間にゼロがある(おそらく)こともあります。私は維持したい値をトリミングしますinput2
かinput3
のいずれかで、
input1 = [ 0 0 0 nonzero 0 nonzero 0 0 0 ] => [ nonzero 0 nonzero ]
input2 = [ nonzero 0 nonzero 0 0 0 ] => [ nonzero 0 nonzero ]
input3 = [ 0 0 0 nonzero 0 nonzero ] => [ nonzero 0 nonzero ]
input4 = [ 0 0 0 nonzero nonzero 0 0 0 ] => [ nonzero nonzero ]
input5 = [ 0 0 0 nonzero nonzero ] => [ nonzero nonzero ]
input6 = [ nonzero nonzero 0 0 0 ] => [ nonzero nonzero ]
そして、上記の方法を使用して:だから、私の入力配列は、のいずれかになります。
いいえ、あなたのアプローチは動作します。やってみました?失敗した場合の例を示します。 – erfan
ええ、あなたが正しいと思う...私はこれがうまくいかないと思った理由があることを知っています。編集:何が起こったのか知っています、私はスライスしていると思っていましたが、配列が0だったインデックスを含めていません –