用随机整数替换矩阵中的零元素

时间:2014-03-26 15:34:36

标签: arrays matlab random

我有一个4x4数组,其中包含如下值:

A =

     4     0     0     0
     0     2     0     0
     0     0     3     0
     1     0     0     0

如何使用1到4的随机整数填充零?

2 个答案:

答案 0 :(得分:3)

只需使用randi生成随机整数,并使用零位置掩码

A = [ 4     0     0     0
      0     2     0     0
      0     0     3     0
      1     0     0     0];
m = A == 0;
A(m) = randi ([1 4], nnz (m), 1);

这样做的优点是,更典型的B = A + ~A .* randi (4, size (A)),是节省一些计算时间。它生成所需随机数的确切数量,并将它们分配到特定位置。它不会对所有元素进行加法和乘法。

答案 1 :(得分:3)

B=A+~A.*randi(4,size(A))

生成一个大小为A的随机矩阵,乘以一个逻辑矩阵(~A),其中A有一个值,其中A有一个值,然后加到A.