我想使用randsample对矩阵中的值进行采样,但我希望采样的值在矩阵中替换为零。我该怎么做/有这个功能吗?
答案 0 :(得分:2)
我认为你不想使用randsample
,因为你有一个给定的矩阵(这里是M
)。您可以使用datasample
来随机抽样现有数据。然后,您可以使用datasample
的第二个输出(此处为ind
)来处理原始矩阵M
中的条目,并轻松覆盖它们。
在以下示例中,操作第二个维度并选择列。如果您想要选择行,请将datasample
的第三个参数更改为1(这是Matlab在没有给出第三个参数时的默认行为)。
% create random data
M = randi(20,4,10)
% randomly sample data
[Y,ind] = datasample(M,4,2)
% write 0 for the sampled data in original matrix
M(:,ind) = 0
结果如下:
M =
20 14 6 18 1 9 4 15 11 11
11 5 9 20 8 19 2 9 3 13
20 20 16 4 1 16 13 11 4 9
15 1 4 12 20 18 4 19 11 13
Y =
18 4 15 14
20 2 9 5
4 13 11 20
12 4 19 1
ind =
4 7 8 2
M =
20 0 6 0 1 9 0 0 11 11
11 0 9 0 8 19 0 0 3 13
20 0 16 0 1 16 0 0 4 9
15 0 4 0 20 18 0 0 11 13
使用rng(4)
初始化。