If statement correction help

2 vues (au cours des 30 derniers jours)
Tony Chan
Tony Chan le 11 Mar 2019
Modifié(e) : per isakson le 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 commentaires
madhan ravi
madhan ravi le 11 Mar 2019
Modifié(e) : madhan ravi le 11 Mar 2019
flip the direction of relational operators and use && instead of &
Walter Roberson
Walter Roberson le 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

Connectez-vous pour commenter.

Réponses (1)

per isakson
per isakson le 11 Mar 2019
Modifié(e) : per isakson le 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,'.')

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by