MATLAB: How to change data

loopspuzzlerunlength

i have a matrix like this: [1 0 0 1 1 1 1 0 1 1 0]
i need to change to: [1 0 0 4 4 4 4 0 2 2 0]
how to make a loop?thanks

Best Answer

Improve my previous code speed three times
x=[1 0 0 1 1 1 1 0 1 1 0]
a=find(x);
b=[ 1 diff(a)];
b(b==1)=0;
b(b~=0)=1;
idx=zeros(numel(a),2);
e=1;
c=0;
d=[];
for k=1:numel(a)
e=e+b(k);
c=c*not(b(k))+1;
d(c)=a(k);
idx(e,:)=[d(1) c];
end
for k=1:e
x(idx(k,1):idx(k,1)+idx(k,2)-1)=idx(k,2);
end