필터 지우기
필터 지우기

How to give IF condition in following code?

조회 수: 1 (최근 30일)
Abhinav
Abhinav 2014년 11월 6일
댓글: Abhinav 2014년 11월 7일
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
Michael Haderlein
Michael Haderlein 2014년 11월 6일
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 2014년 11월 7일
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

댓글을 달려면 로그인하십시오.

채택된 답변

Roger Stafford
Roger Stafford 2014년 11월 6일
편집: Roger Stafford 2014년 11월 6일
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.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by