web-dev-qa-db-ja.com

MATLAB-ベクトルから先頭と末尾のゼロを削除

先頭と末尾にゼロがあるウェーブレット関数があります。ウェーブレットの前または後に発生するすべてのゼロを取り除きたいのですが。ただし、ウェーブレット自体のゼロは削除したくありません。簡単にするために、次の1x11ベクトルがあるとします。

0 0 0 -2 -1 0 -1 -2 0 0 0

先頭と末尾のゼロを削除すると、ベクトルは次のようになります。

-2 -1 0 -1 -2

私の実際のベクトルは大きく、パフォーマンスが私の最大の関心事です。私はMATLABの初心者です。このタスクを可能な限り効率的に実行するためのヒントを教えてください。

22
nedblorf

これを試して

_ y = x(find(x,1,'first'):find(x,1,'last'));
_

find(x,1,'option')コマンドは、最初と最後のゼロ以外のインデックスを提供します。

28
Phonon
i1 = find(X, 1, 'first')

Xの最初の非ゼロ要素のインデックスを提供します

i2 = find(X, 1, 'last') 

最後のインデックスを提供します。その後

X(i1:i2)

先頭と末尾のゼロを取り除いた配列が得られます。

10
Dima