# How can call a vector element using index in the condition of if_else loop?

1 view (last 30 days)
Sharad Patel on 7 Jun 2021
Edited: SALAH ALRABEEI on 7 Jun 2021
Here in this code the R is a vector and using find I identified the indexes of specified number and save them to vectors m, n, o, p. Now by using the vector I want to fill the random numbers between 5 and 40 so I developed the following code. But I am not getting desired result.
R=P(:,6);
m =find(R==40);
n =find(R==25);
o =find(R==15);
p =find(R==8)
for k= 1:6160
if k==k.m
R(k,1)=randi([5 40],:,1);
elseif k==k.n
R(k,1)=randi([5 40],:,1);
elseif k==k.o
R(k,1)=randi([5 40],:,1);
elseif k==k.p
R(k,1)=randi([5 40],:,1);
end
end
R

SALAH ALRABEEI on 7 Jun 2021
% Try this
R=P(:,6);
m =find(R==40);
n =find(R==25);
o =find(R==15);
p =find(R==8)
for k= 1:6160
if ismember(k,m)
R(k,1)=randi([5 40],1);
elseif ismember(k,n)
R(k,1)=randi([5 40],1);
elseif ismember(k,n)
R(k,1)=randi([5 40],1);
elseif ismember(k,n)
R(k,1)=randi([5 40],1);
end
end
R
Sharad Patel on 7 Jun 2021
it can be 40 as well

SALAH ALRABEEI on 7 Jun 2021
Edited: SALAH ALRABEEI on 7 Jun 2021
% A faster way
R(m,1)=randi([5 40],length(m),1);
R(n,1)=randi([5 40],length(n),1);
R(o,1)=randi([5 40],length(o),1);
R(p,1)=randi([5 40],length(p),1);
##### 2 CommentsShowHide 1 older comment
SALAH ALRABEEI on 7 Jun 2021
Absolutely right. Thank you, it will be fix to avoid confusions

Walter Roberson on 7 Jun 2021
R=P(:,6);
m =find(R==40);
n =find(R==25);
o =find(R==15);
p =find(R==8)
k = [m;n;o;p];
nk = length(k);
R(k,1) = randi([5,40],nk,1);
Sharad Patel on 7 Jun 2021
Thank you Walter but I want only one value of random number between 5 and 40 for each condition.

R2012a

### Community Treasure Hunt

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

Start Hunting!