MATLAB: Subtract each column of matrix until -3 is finished

MATLABmatrix

For example, i have a matrix a = [0 1 2 3 4]. How do I subtract each column by 1?
a = [0 3 2 6 4]
b = [0 2 1 2 3]
remainder = size(a, 2) - sum(b)
The remainder is -3. I need to minus from b when b(i) ~= 0 so that at the end the b = [0 1 0 1 3].
Thank you.

Best Answer

I am curious too. Let me guess.
a=0:4;
b=-3; % b is an integer, positive or negative
c=zeros(size(a));
ind=find(a,1);
c(ind:ind+abs(b)-1)=-1;
a=a+c
a =
0 0 1 2 4
Updated for a generic solution
b = [0 2 1 2 3]
remainder=-6;
ind=find(b);
while remainder<0 && ~isempty(ind)
if length(ind)<=abs(remainder)
b(ind)=b(ind)-1
remainder=remainder+length(ind)
ind=find(b);
else
for k=1:abs(remainder)
b(ind(k))=b(ind(k))-1
remainder=remainder+1
end
end
end
b =
0 2 1 2 3
b =
0 1 0 1 2
remainder =
-2
b =
0 0 0 1 2
remainder =
-1
b =
0 0 0 0 2
remainder =
0