Changing the values of an array with an if condition inside a for-loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi everyone,
So I have this code:
% Repulsive forces (Fr)
rho_r = sqrt((x-xo).^2+(y-yo).^2);
if rho_r > rho_0
Fr(1,1) = 0;
Fr(2,1) = 0;
elseif rho_r <= rho_0
Fr(1,1) = Fr(1,1)-Kr*(x-xo)*((rho_r-rho_0)/rho_r);
Fr(2,1) = Fr(2,1)-Kr*(y-yo)*((rho_r-rho_0)/rho_r);
end
Frc = [Frc Fr];
And the first values for x and y are as follow. The values inside the array xo and yo are:
x = 15
y = 10
xo = [20 30 35 50 65]
yo = [13 25 35 38 45]
As you can see with those values for x and y, the elseif should be operating however I still have Fr == 0. I've tried some things out but it still doesn't work. I even created a for loop just as followed:
rho_r = sqrt((x-xo).^2+(y-yo).^2);
for i = 1:5
if rho_r(1,i) > rho_0(1,i)
Fr(1,i) = 0;
Fr(2,i) = 0;
elseif rho_r(1,i) <= rho_0(1,i)
Fr(1,i) = Fr(1,i)-Kr*(x-xo(1,i))*((rho_r(1,i)-rho_0(1,i))/rho_r(1,i));
Fr(2,i) = Fr(2,i)-Kr*(y-yo(1,i))*((rho_r(1,i)-rho_0(1,i))/rho_r(1,i));
end
end
Sorry my bad i forgot to add the values of rho_0 and Kr:
rho_0 = [7 4 5 3 4];
Kr = [500 350 500 250 250];
I've attached the full code
0 commentaires
Réponses (1)
Birdman
le 2 Avr 2020
Modifié(e) : Birdman
le 2 Avr 2020
Maybe the following code will get you going:
x = 10;
y = 10;
xo = [20 30 35 50 65];
yo = [13 25 35 38 45];
rho_r = sqrt((x-xo).^2+(y-yo).^2);
%dummy data
rho_0=30;
Kr=5;
%initial Fr
Fr=zeros(1,numel(xo));
%change values based on conditions
Fr(rho_r > rho_0)=0;
temp=-Kr*(x-xo)*((rho_r-rho_0)/rho_r);
Fr(rho_r <= rho_0)=temp(rho_r <= rho_0)
EDIT:
rho_r>rho_0
ans =
1x5 logical array
1 1 1 1 1
which means that every value in rho_r is greater than every corresponding value in rho_0. Therefore the following line
Fr(rho_r > rho_0)=0;
works and Fr becomes
Fr =
0 0 0 0 0
2 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!