0
我想使用randsample来从矩阵中采样值,但我希望采样值在矩阵中被替换为零。我该怎么做/是否有这个功能?MATLAB - 采样随机值
我想使用randsample来从矩阵中采样值,但我希望采样值在矩阵中被替换为零。我该怎么做/是否有这个功能?MATLAB - 采样随机值
我想你不想使用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)
。
用'0'代替数字后,是否要允许采样器再次选择'0'?请提供一些示例输入和输出数据 – Dan
我已经知道了,Matt的答案有用,谢谢。 –