My elseif condition is never checked. What to do?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Laurian Hurduza
il 26 Ott 2020
Commentato: Image Analyst
il 27 Ott 2020
Hello,
I want to ask a very noob question: My elseif condition is never checked. What to do?
Why do I ask this?
So, let me explain.
I got this piece of code:
A = [0.4 1.2 0.5 0.7 0.2 0.6];
S = [2.0 0.7 0.2 1.1 3.7 0.6];
in(1) = 0.4;
out(1) = in(1)+S(1);
list = 0;
%calculation of ins vector
for i = 2:6
in(i) = in(i-1)+A(i);
%calculation of outs vector
for j = 2:6
out(i) = max(out(i-1),out(i))+S(i);
end
end
So, this program simulates the inputs and outputs in/from a server
Inputs(in) and outputs(out) are already calculated in above for
The idea is simple: if an input is done in server, list will increment by 1, if an output is done from server it will decrement by 1
A way to do this is to compare if, on time axe, we have inputs in server or outputs from it and to increment and decrement accordingly
Here everything I think looks clear for me, I know how to make those ifs
But the big challenge for me is to see the evolution of the list on a plot
So, I wrote this piece of code
i = 1; %ins
o = 1; %outs
n = 1; %every for iteration
for r = 0:0.1:12
if r == in(i)
list = list + 1;
i = i + 1;
elseif r == out(o)
list = list - 1;
o = o + 1;
end
list1(n)=list;
n = n + 1;
end
plot(l1,'-r')
ylabel('list')
xlabel('time')
grid;
My plot looks like this:
Which is I intended, but it looks like the graph will never decrement, it will not go in elseif part.
What can I do in order to make my plot to go down ( to check that elseif as well ) in order to make it work on my plot?
List stores how many clients are not in server ( because one client is in there )
Time stores how much time did server had to take for each client
If I am unclear in what I am asking for, you can ask me to clear some things up.
Thank you for any kind of help.
0 Commenti
Risposta accettata
Image Analyst
il 26 Ott 2020
To compare floating point numbers, you need to use ismembertol(), not ==.
Like
if ismembertol(r, in(i), .0001)
2 Commenti
Image Analyst
il 27 Ott 2020
Please give us a script that runs, or at least plots. When I run your code, I get a error and there is no plot:
clc; % Clear the command window.
fprintf('Beginning to run %s.m ...\n', mfilename);
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
A = [0.4 1.2 0.5 0.7 0.2 0.6];
S = [2.0 0.7 0.2 1.1 3.7 0.6];
in(1) = 0.4;
out(1) = in(1)+S(1);
list = 0;
%calculation of ins vector
for i = 2:6
in(i) = in(i-1)+A(i);
%calculation of outs vector
for j = 2:6
out(i) = max(out(i-1),out(i))+S(i);
end
end
i = 1; %ins
o = 1; %outs
n = 1; %every for iteration
for r = 0:0.1:12
if r == in(i)
list = list + 1;
i = i + 1;
elseif r == out(o)
list = list - 1;
o = o + 1;
end
list1(n)=list;
n = n + 1;
end
plot(l1,'-r')
ylabel('list')
xlabel('time')
grid;
fprintf('\nDone running %s.m ...\n', mfilename);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Environment and Settings in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!