MATLAB: How to use for or while loop for certain range

for loopMATLABMATLAB Compilerwhile loop

I want to add or substract a certain number to my array cell (result(i)) based on corresponding binary(0 or 1) pattern I have . Condition: if binary_pattern is 1 then it should increase with speed of 0.75 per minute, if zero it should decrease with the same speed(-0.75). But when binary_pattern is 1 and inside the range 15 and 20 it should increase by 1 not 0.75. Which means when result reaches 20, has to decrease by and increase again when hits 15 with the speed of 1. Any advices on that? I have tried with the code below, but due to I'm new to Matlab couldn't get my head around it. Thanks in advance!
binary_pattern = zeros(100,1);
binary_pattern(1:25) = 1;
binary_pattern(50:75) = 1;
binary_pattern(90:100) = 1; % to create binary pattern
minutes = [1:100]'; % scale of minutes
result = zeros(100,1);
result(1,1) = 5; % initial condition of a state
for i = 1:100
if binary_pattern(i) == 1
result(i+1) = result(i) + 0.75;
if result(i)>= 20
result(i+1) = result(i) - 1;
elseif result(i)<= 15
result(i+1) = result(i) + 1;
else
end
else
result(i+1) = result(i) - 0.75;
end
end
result(end,:) = [];
plot(minutes,result)

Best Answer

binary_pattern = zeros(100,1);
binary_pattern(1:25) = 1;
binary_pattern(50:75) = 1;
binary_pattern(90:100) = 1; % to create binary pattern
minutes = [1:100]'; % scale of minutes
result = zeros(100,1);
result(1,1) = 15; % initial condition of a state
DeS = 0;
for i = 1:100
if binary_pattern(i) == 1
result(i+1) = result(i) + 1;
if DeS == -1
result(i+1) = result(i) - 1;
end
if result(i+1)>20
result(i+1)= result(i) - 1;
DeS = -1;
end
if result(i+1)<15
result(i+1) = result(i) + 1;
DeS = 0;
end
else % pattern is 0
result(i+1) = result(i) - 0.75;
end
end
result(end,:) = [];
plot(minutes,result)