find first& end of array

5 ビュー (過去 30 日間)
주희 박
주희 박 2022 年 5 月 20 日
回答済み: Stephen23 2022 年 5 月 20 日
Hi
S=[ 0 1 5 2 0 0 0 9 3 50 53 0 0 5 7 4] ;
And I want to pick first&last number of continued numbers except 0.
Like in S ->1 ,2 ,9,53, 5,4
Are there any good method?
Thank you.

採用された回答

Stephen23
Stephen23 2022 年 5 月 20 日
S = [0,1,5,2,0,0,0,9,3,50,53,0,0,5,7,4]
S = 1×16
0 1 5 2 0 0 0 9 3 50 53 0 0 5 7 4
X = diff([0;S(:)]==0)<0 | diff([S(:);0]==0)>0;
V = S(X)
V = 1×6
1 2 9 53 5 4

その他の回答 (2 件)

the cyclist
the cyclist 2022 年 5 月 20 日
I expect someone will post a more elegant method, but I think this does what you want
S=[0 1 5 2 0 0 0 9 3 50 53 0 0 5 7 4];
first = S(diff([0 S]) == S & S~=0);
last = S(diff([S 0]) ==-S & S~=0);
firstLast = [first; last];
output = firstLast(:)'
output = 1×6
1 2 9 53 5 4

Image Analyst
Image Analyst 2022 年 5 月 20 日
Here's a different way:
S=[0 1 5 2 0 0 0 9 3 50 53 0 0 5 7 4];
S2 = [0,S,0];
indexes = sort([strfind(S2~=0, [0 1]) + 1, strfind(S2~=0, [1,0])])
indexes = 1×6
3 5 9 12 15 17
S3 = S2(indexes)
S3 = 1×6
1 2 9 53 5 4

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by