How to compare with the elements before and after
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I want know the way to comapre with before element and after element.
Please someone tell me.
I want to comapare V_Ball(index) and V_Ball(index+1).
If V_Ball(index) > V_Ball(index+1) , I wanna break simulation. How should I do?
L1 = 1;
L2 = 1;
M1 = 1;
M2 = 1;
T = 0.01;
Theta1 = -3.14;
Theta2 = 1.57;
V1 = 0;
V2 = 0;
DPendulum = classDoublePendulum(L1,L2,M1,M2,Theta1,Theta2,V1,V2,T);
for i = 1:200
Trq1 = -10;
Trq2 = -10;
DPendulum.pstep(Trq1,Trq2);
V = DPendulum.AngleVelocity2;
Angle = cos(DPendulum.Theta2);
V_Ball(i) = V*Angle;
for index = 1 : length(V_Ball)
if abs(V_Ball(index)) - abs(V_Ball(index+1:end)) > 0% compare elements before after
disp(true);
else
disp(false);
end
end
end
0 Kommentare
Antworten (1)
Davide Masiello
am 5 Feb. 2022
Bearbeitet: Davide Masiello
am 5 Feb. 2022
Your condtional statement says
if abs(V_Ball(index)) - abs(V_Ball(index+1:end)) > 0
which is wrong, beacuse when index=length.V_Ball than index+1 is larger than the size of V_Ball.
Plus, your are checking your statement over the whole array V_Ball at each iteration of the outer loop, while I think you just need to do that for the last two elements.
Another issue is that you are using the absolute value in the conditional statement, which makes it a bit ambiguous because you are not actually checking that V_Ball(index) > V_Ball(index+1) .
Now, I am not sure I correctly understand your problem, but I think this might be a solution
for i = 1:200
Trq1 = -10;
Trq2 = -10;
DPendulum.pstep(Trq1,Trq2);
V = DPendulum.AngleVelocity2;
Angle = cos(DPendulum.Theta2);
V_Ball(i) = V*Angle;
if i = 1
elseif V_Ball(i-1) > V_Ball(i)
disp(true);
break
else
disp(false);
end
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!