Replace jth zero in vector with j
1 view (last 30 days)
Show older comments
Scott
on 27 Sep 2014
Answered: Mohammad Abouali
on 27 Sep 2014
I would like to take a vector x as an input and (assuming that it has 0s), replace each 0 with the index of zero that it is. For example: >> x = [1 0 2 4 -3 0 3 0]; Would turn into: >>x_new = [1 1 2 4 -3 2 3 3]; Here is my code so far:
z = length(find(x==0)); count = 1;
for i=1:z
x(find(x==0))=count;
count = count + 1;
end;
This code just replaces all of the 0 elements with a 2. I want it to go through and count the zeroes off, and I am not sure at all where I am going wrong...
Any Thoughts?
Thanks!
0 Comments
Accepted Answer
More Answers (1)
Youssef Khmou
on 27 Sep 2014
try :
x = [1 0 2 4 -3 0 3 0];
y=x;
[a,b]=find(x==0);
y(b)=b;
2 Comments
Geoff Hayes
on 27 Sep 2014
Rather than assigning b as the result, just do the following
y(b) = 1:length(b);
as 1:length(b) will produce a vector with the same length as b with values in the order of 1,2,3,..
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!