如何从 Matlab 中的矩阵中随机 select x 个索引
How to randomly select x number of indices from a matrix in Matlab
我正在尝试在零矩阵中有效地生成随机分散但数量有限的 1。
假设我有一个 10x10 的零矩阵 (zeros(10)
),我想随机放置十个 1,所以它看起来像:
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
如何在没有 for 循环且不手动插入每个位置的情况下执行此操作(此示例是我的实际问题的小得多的版本)?
到目前为止我的代码:
% Generate zeros
M = zeros(10)
% Generate random indices
Rands = [randsample(10, 10) randsample(10, 10)]
其中第一列是行索引,第二列是列索引。
现在我显然不能像这样将这些索引放入 M
的行和列索引中:
M(Rands(:,1), Rands(:,2)) = 1
我怎样才能对这些随机索引的变化进行向量化处理?
我正在尝试在零矩阵中有效地生成随机分散但数量有限的 1。
假设我有一个 10x10 的零矩阵 (zeros(10)
),我想随机放置十个 1,所以它看起来像:
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
如何在没有 for 循环且不手动插入每个位置的情况下执行此操作(此示例是我的实际问题的小得多的版本)?
到目前为止我的代码:
% Generate zeros
M = zeros(10)
% Generate random indices
Rands = [randsample(10, 10) randsample(10, 10)]
其中第一列是行索引,第二列是列索引。
现在我显然不能像这样将这些索引放入 M
的行和列索引中:
M(Rands(:,1), Rands(:,2)) = 1
我怎样才能对这些随机索引的变化进行向量化处理?