deleting separate zeros from vector
2 ビュー (過去 30 日間)
古いコメントを表示
I need to remove separate zeros from a series of numbers. But if zeros repeat, I need to keep them.
example of vector:
A = [ 0 0 1 0 0 0 1 0 1 0 0 1 5 9 8 2 0 3 0 1 0 0 0 ];
result:
A = [ 0 0 1 0 0 0 1 1 0 0 1 5 9 8 2 3 1 0 0 0 ];
0 件のコメント
採用された回答
Rik
2021 年 10 月 6 日
It took a bit of thinking, but here is a oneliner:
A = [ 0 0 1 0 0 0 1 0 1 0 0 1 5 9 8 2 0 3 0 1 0 0 0 ];
A(conv([NaN A]==0,[-1 1 -1])==1)=[];
A
Thanks to @Alan Stevens for the idea of converting A to a logical and ignoring it for the rest of the processing.
その他の回答 (1 件)
Alan Stevens
2021 年 10 月 6 日
Here's one way (there is probably a slicker way!):
A = [ 0 0 1 0 0 0 1 0 1 0 0 1 5 9 8 2 0 3 0 1 0 0 0 ];
ix = find(A~=0);
it = find(abs(diff(ix))==2);
remove = ix(it+1)-1;
A(remove)=[]
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Time Series Events についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!