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

1 Ansicht (letzte 30 Tage)
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

Akzeptierte Antwort

SALAH ALRABEEI
SALAH ALRABEEI am 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
  3 Kommentare
Walter Roberson
Walter Roberson am 7 Jun. 2021
So all of the R=40 should result in the same random number for all positions? And all of the 25 should result in the same random number as each other, but different from the R=40?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

SALAH ALRABEEI
SALAH ALRABEEI am 7 Jun. 2021
Bearbeitet: SALAH ALRABEEI am 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 Kommentare
Walter Roberson
Walter Roberson am 7 Jun. 2021
you need
, 1
on the randi. The default with a single size parameter is square matrix.
SALAH ALRABEEI
SALAH ALRABEEI am 7 Jun. 2021
Absolutely right. Thank you, it will be fix to avoid confusions

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 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);
  1 Kommentar
Sharad Patel
Sharad Patel am 7 Jun. 2021
Thank you Walter but I want only one value of random number between 5 and 40 for each condition.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2012a

Community Treasure Hunt

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

Start Hunting!

Translated by