在下面的循环中,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
答案 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)));