2013-12-08 15 views
-1

在下面的循環中,分配[1, 1000]間隔中的隨機整數。將現有向量中的隨機值分配給循環內的增長向量

在前3輪循環中,k可以是:例如[5],[2 6][5 1 5]

對於一個向量rnd_A,我想從矢量A中分配對應於k個索引的值。

所以在第三輪,在上面的例子中,我想得到:rnd_A(1)= A(5),rnd_A(2)=A(1)rnd_A(3)=A(5)

是否可以用一行代碼或兩個(尺寸標註?)來做到這一點?

for i = 1:1000 
    k = randi([1,1000],[i,1]); 

    'assign values to rnd_A' 

    'do something with rnd_A' 
    . 
    . 

end 

回答

0

只需使用k索引A並將其賦值給rnd_A

rnd_A = A(k); 

或者,如果rnd_A有更多的條目,並要保留它們的值,使用

rnd_A(1:numel(k)) = A(k); 
0

假設A是您的矢量:

idx = randi(length(A), 1, length(A)); % random sequence of integer as index 
rnd_A = A(idx); % index into A 

這是兩行,你可以把它合併成一行。

rnd_A = A(randi(length(A), 1, length(A))); 
+0

A有1000個元素。 – user2042719

+0

@ user2042719那麼最好用長度(A)來使它長度不變,這更有意義。 :) – Ray

+0

感謝您的答案。 – user2042719