如何随机分配矩阵元素

时间:2014-07-28 06:44:29

标签: matlab matrix

在Matlab中,我想知道如何为任何给定大小的矩阵随机分配矩阵内的值?

例如:

Enter non-zero elements in 3*3 matrix? 3

      1
      4
      7

这些元素随机放置在3 * 3矩阵中,其余6个元素变为零。

通常,对于我们在矩阵中输入的一些非零元素,矩阵中的其余元素变为零。

如何在Matlab中为上述示例编写代码?我必须输入非零元素的数量,并在矩阵内随机分配输入值,而不指定任何特定的行或列。

1 个答案:

答案 0 :(得分:5)

使用randpermlinear indexing

非常简单
V = [1,4,7];
M = zeros(3);
M(randperm(numel(M), numel(V))) = V

如果您有旧版本的Matlab(请参阅注释,这也适用于您使用Octave),那么您可以尝试:

V = [1,4,7];
M = zeros(3);
I = randperm(numel(M));
M(I(1:numel(V))) = V