Using if-statements seperatly for each value in an array

6 views (last 30 days)
I use if-statements which depend on a certain value. Now, instead of this single value, I have an array with a number of values (roughly 500), each representing one machine. Now for each of these values, the if statement should make a decision. I could do this with a loop around the if-statement, running the loop once for each value. However, all of this is iterated for 60.000 time steps or more, so this kind of loop slows down the simulation immensely. Do you see any smarter way of doing what I put in the example code? Basically a way in which in one go, all the if-statement is applied individually to each array value?
numberOfMachines = 500;
x = randi([0,1],numberOfMachines,1);
for n=1:numberOfMachines
if x(n) == 1
y(n) = 10;
else
y(n) = 0;
end
end

Accepted Answer

David Hill
David Hill on 9 Feb 2022
numberOfMachines = 500;
x = randi([0,1],numberOfMachines,1);
y=zeros(size(x));
y(x==1)=10;
  4 Comments
Florian Hölscher
Florian Hölscher on 9 Feb 2022
Edited: Florian Hölscher on 9 Feb 2022
Thank you for your answer! Is it possible to combine multiple conditions this way, something like y(x==1,z>3)=10; ?
and can I put or conditions? How would you go about the following example?
S_FS = randi([0,1],numberOfMachines,1);
S_SR = randi([0,1],numberOfMachines,1);
A = randi([0,10],numberOfMachines,1);
B = randi([0,10],numberOfMachines,1);
A_deact = 5;
B_deact = 5;
if S_FS == 1
if A > A_deact || B < B_deact
S_FS = 0;
S_SR = 1;
end
elseif S_FS == 0 && S_SR == 0
S_FS = 1;
end

Sign in to comment.

More Answers (0)

Categories

Find more on Genomics and Next Generation Sequencing in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!