How to use if else for terms
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have code to plot Position, Velocity and Torque
clear all; close all; clc;
%% Initialization
S0= 0;
T0 = 0;
%% Parameters
% Davis Equation Parameters
C0 = [7.6658e-3;7.6658e-3;7.6658e-3;7.6658e-3;7.6658e-3;7.6658e-3;7.6658e-3;];
C1 = [1.08e-4;1.08e-4;1.08e-4;1.08e-4;1.08e-4;1.08e-4;1.08e-4;];
C2 = [2.06e-5;2.06e-5;2.06e-5;2.06e-5;2.06e-5;2.06e-5;2.06e-5;];
% Mass Parameters
Mass = [20546.8815192050;20957.5068354343;20964.8885351993;20157.6130816775;20970.5927817606;20957.1669482429;20485.3756487228];
% Another Parameters
Tao = [5;5;5;5;5;5;5;]; % Inertial lag of longitudinal dynamics
R = [1.22734407596025;1.24787534177172;1.24824442675996;1.20788065408388;1.24852963908803;1.24785834741215;1.22426878243614]; % Mechanical efficiency of the driveline
u = [205000;220000;235000;250000;265000;280000;302000];
Torque = [2600;2600;2600;2600;2600;2600;2600;];
V0 = 30; % Desired Speed
f = 0.01; % rolling friction
Eta = 0.96; % Efficency
g = 9.8; % gravitity
%% Output Vectors (Void)
S_1 = [];
V_1 = [];
T_1 = [];
S_2=[];
V_2=[];
T_2=[];
S_3=[];
V_3=[];
T_3=[];
S_4=[];
V_4=[];
T_4=[];
S_5=[];
V_5=[];
T_5=[];
S_6=[];
V_6=[];
T_6=[];
S_7=[];
V_7=[];
T_7=[];
%% Discrete Time Model
for k = 0:100 %%%%%%step definition : 0 to step size %%%%%
dt = 100 - k;
S1 = S0 + V0*dt;
V1 = V0 + (dt/Mass(1))*(Eta*Torque(1)/R(1) - (C0(1) + C1(1)*V0 + C2(1)*V0^2 + Mass(1)*g*f));
T1 = T0 - (1/Tao(1))*Torque(1)*dt + (1/Tao(1))*u(1)*dt;
S2 = S1 + V1*dt;
V2 = V1 + (dt/Mass(2))*(Eta*Torque(2)/R(2) - (C0(2) + C1(2)*V1 + C2(2)*V1^2 + Mass(2)*g*f));
T2 = T1 - (1/Tao(2))*Torque(2)*dt + (1/Tao(2))*u(2)*dt;
S3 = S2 + V2*dt;
V3 = V2 + (dt/Mass(3))*(Eta*Torque(3)/R(3) - (C0(3) + C1(3)*V2 + C2(3)*V2^2 + Mass(3)*g*f));
T3 = T2 - (1/Tao(3))*Torque(3)*dt + (1/Tao(3))*u(3)*dt;
S4 = S3 + V3*dt;
V4 = V3 + (dt/Mass(4))*(Eta*Torque(4)/R(4) - (C0(4) + C1(4)*V3 + C2(4)*V3^2 + Mass(4)*g*f));
T4 = T3 - (1/Tao(4))*Torque(4)*dt + (1/Tao(4))*u(4)*dt;
S5 = S4 + V4*dt;
V5 = V4 + (dt/Mass(5))*(Eta*Torque(5)/R(5) - (C0(5) + C1(5)*V4 + C2(5)*V4^2 + Mass(5)*g*f));
T5 = T4 - (1/Tao(5))*Torque(5)*dt + (1/Tao(5))*u(5)*dt;
S6 = S5 + V5*dt;
V6 = V5 + (dt/Mass(6))*(Eta*Torque(6)/R(6) - (C0(6) + C1(6)*V5 + C2(6)*V5^2 + Mass(6)*g*f));
T6 = T5 - (1/Tao(6))*Torque(6)*dt + (1/Tao(6))*u(6)*dt;
S7 = S6 + V6*dt;
V7 = V6 + (dt/Mass(7))*(Eta*Torque(7)/R(7) - (C0(7) + C1(7)*V6 + C2(7)*V6^2 + Mass(7)*g*f));
T7 = T6 - (1/Tao(7))*Torque(7)*dt + (1/Tao(7))*u(7)*dt;
S0 = S1;
T0 = T1;
V0 = V1;
% Fi_i =[s1;u1;Ti1];
%% Output Vectors
S_1 = [S_1,S1];
V_1 = [V_1,V7];
T_1 = [T_1,T7];
S_2 = [S_2,S2];
V_2 = [V_2,V2];
T_2 = [T_2,T2];
S_3 = [S_3,S3];
V_3 = [V_3,V3];
T_3 = [T_3,T3];
S_4 = [S_4,S4];
V_4 = [V_4,V4];
T_4 = [T_4,T4];
S_5 = [S_5,S5];
V_5 = [V_5,V5];
T_5 = [T_5,T5];
S_6 = [S_6,S6];
V_6 = [V_6,V6];
T_6 = [T_6,T6];
S_7 = [S_7,S7];
V_7 = [V_7,V7];
T_7 = [T_7,T7];
end
%% Plots
figure(1)
plot(S0,'c-','linewidth',1.5),grid;
hold on;
plot(S_1,'m-','linewidth',1.5),grid;
hold on;
plot(S_2,'b-','linewidth',1.5),grid;
hold on;
plot(S_3,'g-','linewidth',1.5),grid;
hold on;
plot(S_4,'m*','linewidth',1.5),grid;
hold on;
plot(S_5,'g*','linewidth',1.5),grid;
hold on;
plot(S_6,'b*','linewidth',1.5),grid;
hold on;
plot(S_7,'m--','linewidth',1.5),grid;
hold on;
h = legend('0','1','2','3','4','5','6','7','Location','SouthEast','interpreter','latex');
set(h,'box','off'); box off;
xlabel('Step Size','interpreter','latex');ylabel('Position (m)','interpreter','latex');
title('Train Position','interpreter','latex')
set(gca,'FontSize',20)
set(gcf,'Position',[0 350 700 1050 1400 1750 2100 ]);
figure(2)
plot(V0,'c-','linewidth',1.5),grid;
hold on;
plot(V_1,'m-','linewidth',1.5),grid;
hold on;
plot(V_2,'b-','linewidth',1.5),grid;
hold on;
plot(V_3,'g-','linewidth',1.5),grid;
hold on;
plot(V_4,'m*','linewidth',1.5),grid;
hold on;
plot(V_5,'g*','linewidth',1.5),grid;
hold on;
plot(V_6,'b*','linewidth',1.5),grid;
hold on;
plot(V_7,'m--','linewidth',1.5),grid;
hold on;
h = legend('0','1','2','3','4','5','6','7','Location','SouthEast','interpreter','latex');
set(h,'box','off'); box off;
xlabel('Step Size','interpreter','latex');ylabel('Speed (m/s)','interpreter','latex');
title('Train Velocity','interpreter','latex')
set(gca,'FontSize',20)
figure(3)
plot(T0,'c-','linewidth',1.5),grid;
hold on;
plot(T_1,'m-','linewidth',1.5),grid;
hold on;
plot(T_2,'b-','linewidth',1.5),grid;
hold on;
plot(T_3,'g-','linewidth',1.5),grid;
hold on;
plot(T_4,'m*','linewidth',1.5),grid;
hold on;
plot(T_5,'g*','linewidth',1.5),grid;
hold on;
plot(T_6,'b*','linewidth',1.5),grid;
hold on;
plot(T_7,'m--','linewidth',1.5),grid;
hold on;
h = legend('0','1','2','3','4','5','6','7','Location','SouthEast','interpreter','latex');
set(h,'box','off'); box off;
xlabel('Step Size ','interpreter','latex');ylabel('Torque (N)','interpreter','latex');
title('Train Torque','interpreter','latex')
set(gca,'FontSize',20)
I want to add if else for terms, like this
if S_1 > 350
V_2
else V_2 = 0
end
if S_2 > 700
V_3
else V_3 = 0
end
if S_3 > 1050
V_4
else V_4 = 0
end
if S_4 > 1400
V_5
else V_5 = 0
end
if S_5 > 1750
V_6
else V_6 = 0
end
if S_6 > 2100
V_7
else V_7 = 0
end
is it true?
0 commentaires
Réponses (1)
Mario Malic
le 14 Jan 2021
Modifié(e) : Mario Malic
le 14 Jan 2021
Hello,
Apart from code which is not friendly to read, here's explanation:
if S_1 > 350 % if S_1 is bigger than 350
V_2 % show V_2
else V_2 = 0 % set V_2 equal to 0
end
Voir également
Catégories
En savoir plus sur Assembly 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!