将现有向量中的随机值分配给循环内的增长向量

时间:2013-12-08 16:41:19

标签: matlab matrix vector indexing

在下面的循环中,k在[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

2 个答案:

答案 0 :(得分:0)

只需使用k索引A并将其分配给rnd_A

rnd_A = A(k);

或者,如果rnd_A有更多条目并且您想要保留其值,请使用

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

答案 1 :(得分: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)));