Replace jth zero in vector with j
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
更多回答(1 个)
Youssef Khmou
2014-9-27
try :
x = [1 0 2 4 -3 0 3 0];
y=x;
[a,b]=find(x==0);
y(b)=b;
2 个评论
Geoff Hayes
2014-9-27
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,..
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!