how to do repeating numbers in array

1 view (last 30 days)
Hi
I have an array like [1 0 0 0 2 0 0 0 3 0 0 0 0 0 5 0 0 0 0].
I want output like, [1 1 1 1 2 2 2 2 3 3 3 3 3 3 5 5 5 5 5].
how i can do this?
Thanks in Advance!!!
Murugan

Accepted Answer

Stephen23
Stephen23 on 19 Sep 2018
Edited: Stephen23 on 19 Sep 2018
An old fashioned way:
>> V = [1,0,0,0,2,0,0,0,3,0,0,0,0,0,5,0,0,0,0];
>> X = V~=0;
>> U = V(X);
>> U(cumsum(X))
ans =
1 1 1 1 2 2 2 2 3 3 3 3 3 3 5 5 5 5 5

More Answers (1)

jonas
jonas on 19 Sep 2018
A is your array
A(A==0)=NaN
A=fillmissing(A,'previous')
  1 Comment
Murugan C
Murugan C on 20 Sep 2018
currently i am using lower version. I think, it should work for higher version. Thanks for your suggestion.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!