【问题标题】:Substitute zero elements in matrix with random integers用随机整数替换矩阵中的零元素
【发布时间】:2014-05-05 03:29:45
【问题描述】:

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

A =

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

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

【问题讨论】:

    标签: arrays matlab random


    【解决方案1】:

    只需使用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)),是节省一些计算时间。它生成所需随机数的确切数量并将它们分配到特定位置。它不会对所有元素进行加法和乘法。

    【讨论】:

      【解决方案2】:
      B=A+~A.*randi(4,size(A))
      

      生成一个大小为 A 的随机矩阵,乘以一个逻辑矩阵 (~A),该矩阵在 A 有一个值的地方为零,然后加到 A。

      【讨论】:

        猜你喜欢
        • 2022-07-11
        • 2022-01-24
        • 2023-04-08
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        • 1970-01-01
        相关资源
        最近更新 更多