How to fill a vector and change its elements when reaching a specific element?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Bruno Luong
le 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 commentaires
Bruno Luong
le 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
Plus de réponses (1)
Image Analyst
le 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 commentaires
Image Analyst
le 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:
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!