How to fill a vector and change its elements when reaching a specific element?
3 views (last 30 days)
Show older comments
Hi all!
i want to fill a row vector X=1*3600 as x(j+1)=x(j)+20, and elements of X should be 0<=x<=1000.
for example :
x(1)=0
x(2)=20
x(3)=40,
.....
and when arriving x(j)=1000, x(j+1)=x(j)-20 as following :
x(j)=1000
x(j+1)=980
x(j+2)=960,
......
and when coming to "0" , it will start again x(j+1)=x(j)+20. i want to repeat that until arriving at the column 3600.
thanks in advance
0 Comments
Accepted Answer
Bruno Luong
on 17 Nov 2022
x = zeros(1, 3600);
x(1) = 0;
dx = 20;
for k=2:length(x)
xk = x(k-1) + dx;
if xk > 1000
dx = -20;
xk = x(k-1) + dx;
elseif xk < 0
dx = 20;
xk = x(k-1) + dx;
end
x(k) = xk;
end
plot(x,'o-')
3 Comments
Bruno Luong
on 17 Nov 2022
A variant, avoid repeating code
x = zeros(1, 3600);
x(1) = 0;
dx = 20;
k = 1;
while k < length(x)
xk = x(k) + dx;
if xk > 1000
dx = -20;
elseif xk < 0
dx = 20;
else
k = k+1;
x(k) = xk;
end
end
More Answers (1)
Image Analyst
on 17 Nov 2022
Try this:
maxx = 1000;
x = zeros(1, 3600);
index = 2;
while x(index-1) < maxx && index < length(x)
x(index) = x(index-1) + 20;
index = index + 1;
end
for k = index : length(x)
x(k) = x(k-1) - 20;
% Quit if x goes negative
if x(k) < 0
break;
end
end
% Show in command window
x
4 Comments
Image Analyst
on 17 Nov 2022
OK, looks like you're going to use Bruno's answer so I won't bother. You can increase your skills by investing 2 hours here:
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!