MATLAB - 采样随机值

时间:2015-07-10 08:30:52

标签: matlab

我想使用randsample对矩阵中的值进行采样,但我希望采样的值在矩阵中替换为零。我该怎么做/有这个功能吗?

1 个答案:

答案 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)初始化。