Filter löschen
Filter löschen

How to give IF condition in following code?

2 Ansichten (letzte 30 Tage)
Abhinav
Abhinav am 6 Nov. 2014
Kommentiert: Abhinav am 7 Nov. 2014
I have following code. It is generating some random values of y (0 or 1). I want it to select at least 2 ones's(1) and it it should never select all zeros (0).
for i=1:W
y = randi([0 1]);
QTWM2 = round(((1000-500)*(rand(1)))+500);
WSCT= y* round(((1500-1000)*(rand(1)))+1000);
WCST1(i)=WSCT;
QTWM1(i)=QTWM2;
f11(i) = y;
f1(i)=CFWT*y;
end
Please provide me with the solution
  4 Kommentare
Michael Haderlein
Michael Haderlein am 6 Nov. 2014
Actually, it's difficult to understand the question itself. Your code creates a bunch of random values, between 500 and 1000 (QTWM), between 1000 and 1500 plus 0 (WSCT), either 0 or 1 (f11) and either 0 or CFWT (f1). So what is now the question? Out of which array(s) should the values be chosen? How many values should be chosen?
Abhinav
Abhinav am 7 Nov. 2014
In this code 'y' will generate an array depending upon the value of 'W'. Let W = 5 so it will generate an array of 0 & 1 for 5 places. Suppose it generates [0 0 0 1 1]. I want that whatever the value of W it should only execute the loop if it has at least 2 ones in it. For eg for W=6 [0 0 0 0 0 1] is unacceptable but [0 0 0 0 1 1] is acceptable. I have no concern with other values. If it satisfies the condition only then it should display result to me otherwise run again

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 6 Nov. 2014
Bearbeitet: Roger Stafford am 6 Nov. 2014
b = true;
while b
yt = randi([0,1],W,1);
b = (sum(yt)<2); % Repeat if 'yt' has less than two ones
end
for i=1:W
y = yt(i);
QTWM2 = ....
....
The while-loop will seldom have to repeat itself.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by