how to count non zero elements in a vector and replace this values based on the count values
古いコメントを表示
Dear all,
I'm a new matlab user and in my case i have a vector let say: v= [0 0 0 0.1 0.2 0.3 0.4 0.5 0 0 0 0 0 0 0.1 0.2] I want to count consecutive non zero values i.e in my vector have first five nonzero values [0.1 0.2 0.3 0.4 0.5] and two last nozeros values[0.1 0.2] what I want is: count the consecutive non zero values and put a condition i.e if the length of nonzeros is greater then 3 (count>3) then the respective values of vector V(i) remain v(i) if the length consecutive values is less than three (count<3) then respective values of v(i) =0 I want to get a new vector let say v1 derivation from vector v where: v1= [0 0 0 0.1 0.2 0.3 0.4 0.5 0 0 0 0 0 0 0 0]
Any help would be appreciated Thank you DM
採用された回答
その他の回答 (2 件)
Andrei Bobrov
2015 年 7 月 30 日
編集済み: Andrei Bobrov
2015 年 7 月 30 日
v= [0 0 0 0.1 0.2 0.3 0.4 0.5 0 0 0 0 0 0 0.1 0.2]';
ii = v ~= 0;
t = [false;diff(ii)==1];
i1 = cumsum(t).*ii;
N = histcounts(i1,1:(max(i1)+1));
i1(ismember(i1,find(N <= 3))) = 0;
out = v.*i1;
2 件のコメント
D Marini
2015 年 7 月 30 日
Sean de Wolski
2015 年 7 月 30 日
histcounts is new in R2014b, if you're on an older release either upgrade or use histc.
カテゴリ
ヘルプ センター および File Exchange で Data Distribution Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!