If statement correction help

2 views (last 30 days)
Tony Chan
Tony Chan on 11 Mar 2019
Edited: per isakson on 11 Mar 2019
Hi I am trying to write an if statement. What I need is to create an array of 1000 random variables from -1 to 0 and 1/2 to 1. My algorithm is if the number in that element is less than 0 and greater than 0.5, move onto the next, if not repeat but doesn't not seem to work when I check the resulting array. Sorry if this may be rudimentary but so far I wrote:
X1 = zeros(1, 1e3);
for i=1:numel(X1);
X1(i)=-1+(2)*rand(1);
if X1(i) < 0 & X1(i) > 0.5;
i=i+1;
else
i=i;
end
end
Thank you so much, I appreciate the help.
  2 Comments
madhan ravi
madhan ravi on 11 Mar 2019
Edited: madhan ravi on 11 Mar 2019
flip the direction of relational operators and use && instead of &
Walter Roberson
Walter Roberson on 11 Mar 2019
It is not possible for a number to be sumultaneously less than 0 and greater than 1/2 . You might want to use | instead of & or you might want to use > and < instead of < and >
Note that any change you make to a loop control variable such as i inside the loop will be ignored on the next iteration of the loop. You cannot cause a particular for iteration to repeat by adjusting the loop control variable. Consider using while

Sign in to comment.

Answers (1)

per isakson
per isakson on 11 Mar 2019
Edited: per isakson on 11 Mar 2019
"I need is to create an array of 1000 random variables from -1 to 0 and 1/2 to 1"
Another approach
>> X1 = rand(1,1e3)*1.5 - 1;
>> X1(X1>0) = X1(X1>0)+0.5;
>> plot(X1,'.')
or to get the "same" number of elements in each interval
>> X1 = rand(1,1e3)*2 - 1;
>> X1(X1>0) = X1(X1>0)/2 + 0.5;
>> plot(X1,'.')

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!