2015-07-10 101 views
0

我想使用randsample来从矩阵中采样值,但我希望采样值在矩阵中被替换为零。我该怎么做/是否有这个功能?MATLAB - 采样随机值

+0

用'0'代替数字后,是否要允许采样器再次选择'0'?请提供一些示例输入和输出数据 – Dan

+0

我已经知道了,Matt的答案有用,谢谢。 –

回答

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)