MATLAB 创建随机矩阵

Ammar Ali 2023年1月30日
  1. 在 MATLAB 中使用 rand() 函数生成随机数
  2. 在 MATLAB 中使用 randi() 函数生成随机数
  3. 在 MATLAB 中使用 randn() 函数生成随机数
  4. 在 MATLAB 中使用 randperm() 函数生成随机数
  5. 在 MATLAB 中使用 betarnd() 函数生成随机数
  6. 在 MATLAB 中使用 random() 函数生成随机数
MATLAB 创建随机矩阵

本教程将讨论如何使用 rand()randi()randn()randperm()betarand()random() 函数生成或创建随机数在 MATLAB 中。

在 MATLAB 中使用 rand() 函数生成随机数

如果要生成均匀分布的随机数,可以使用 MATLAB 中的 rand() 函数,该函数生成 0 到 1 之间的随机数。还可以指定包含随机值的矩阵的大小,每个值都会在 0 和 1 之间,你可以通过将它们与缩放器相乘来根据你的要求进行缩放。例如,让我们使用 rand() 函数生成一个 2×2 随机值矩阵。请参考下面的代码。

rn = rand(2)

输出:

rn =

    0.2259    0.2277
    0.1707    0.4357

正如你在输出中看到的那样,生成了一个包含 0 到 1 之间随机值的 2×2 矩阵。如果要指定随机数的范围,则必须使用以下公式。

rn = a + (b-a).*rand(n,1)

在这个公式中,a 是下限,b 是上限,而 n 是随机数的长度。例如,让我们生成 2 到 8 范围内的十个随机数。请参考下面的代码。

a = 2;
b = 8;
n = 10;
rn = a + (b-a).*rand(n,1)

输出:

rn =

    7.5403
    4.5812
    3.1089
    7.4293
    7.8785
    4.6332
    2.6667
    3.5484
    4.4523
    5.5694

有 2 到 8 范围内的十个随机数。如果你只想要输出中的整数,你可以使用 round() 函数将这些随机数转换为整数,该函数将浮点数四舍五入到最接近的整数。你还可以使用 size() 函数的大小和数据类型的 like 属性从现有数组中克隆随机数的大小和数据类型。例如,让我们创建一个数组并根据该数组的大小和数据类型生成随机值。请参考下面的代码。

v = [2 3 1 5]
rn = rand(size(v),'like',v)

输出:

v =

     2     3     1     5


rn =

    0.4886    0.5785    0.2373    0.4588

数组和随机数的大小和数据类型相同。查看此链接以获取有关 rand() 函数的更多详细信息。

在 MATLAB 中使用 randi() 函数生成随机数

上述函数生成浮点随机数,但如果要生成随机整数,可以使用 MATLAB 中的 randi() 函数,该函数生成从 1 到指定整数的随机整数,你可以将其指定为 randi() 函数中的第一个参数。你还可以指定包含随机值的输出矩阵的大小作为第二个和第三个参数。例如,让我们生成一个 3×3 矩阵,其中包含从 1 到 15 的随机整数。请参考下面的代码。

rn = randi(15,3,3)

输出:

rn =

     6     1     8
    11    12    14
     3     8    10

该矩阵的大小为 3×3,其中包含 1 到 15 之间的随机整数。你还可以生成特定范围之间的随机整数,你只需将范围作为第一个参数传递在方括号中 randi() 函数。例如,让我们生成 -10 到 10 之间的 10 个随机数。请参考下面的代码。

rn = randi([-10,10],10,1)

输出:

rn =

     2
     8
     6
     2
    -7
    -5
     8
   -10
     0
    -7

在 -10 到 10 的范围内有十个随机数。你还可以通过在 randi() 函数中传递数据类型名称来定义整数的数据类型。你可以选择的数据类型有:'single', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32' , 或 'uint32'。你可以使用 size() 函数根据现有数组的大小定义随机数的大小,使用 like 属性定义数字数据类型。例如,让我们根据现有数组的大小和数值数据类型生成一个随机值矩阵。请参考下面的代码。

v = [1 2; 6 7]
rn = randi(7,size(v),'like',v)

输出:

v =

     1     2
     6     7


rn =

     6     1
     7     7

数组和随机数的大小和数据类型相同。查看此链接以获取有关 randi() 函数的更多详细信息。

在 MATLAB 中使用 randn() 函数生成随机数

如果要生成正态分布的随机数,可以使用 MATLAB 中的 randn() 函数。randn() 函数与 rand() 函数相同,只是分布类型不同。rand() 函数生成均匀分布的随机数,而 randn() 函数生成正态分布的随机数。你可以根据需要使用这些功能中的任何一个。查看此链接以获取有关 randn 函数的更多详细信息。

在 MATLAB 中使用 randperm() 函数生成随机数

如果要生成整数的随机排列,可以使用 MATLAB 中的 randperm() 函数。整数的随机排列将介于 1 到特定数字之间,你可以在 randperm() 函数中将其定义为第一个参数。你还可以将要生成的整数数量定义为函数中的第二个参数。例如,让我们生成 6 个唯一整数的随机排列。请参考下面的代码。

rn = randperm(10,5)

输出:

rn =

     2     3    10     8     7

所有整数都是唯一的,范围从 1 到 10。请注意,randperm() 函数与 randperm() 函数相同,不同之处在于 randperm() 生成唯一整数,而在 randi() 函数,整数可以重复。查看此链接以了解有关 randperm 功能的更多详细信息。

在 MATLAB 中使用 betarnd() 函数生成随机数

如果要从 beta 分布生成随机数,可以使用 MATLAB 中的 betarnd() 函数。此函数生成由第一个和第二个参数指定的随机整数:向量、矩阵或相同大小的数组。例如,让我们使用两个向量作为输入,根据 beta 分布生成一个 1×5 随机数矩阵。请参考下面的代码。

a = [1 2 3 4 5];
b = [9 8 7 6 5];
rn = betarnd(a,b)

输出:

rn =

    0.1234    0.1847    0.3334    0.2689    0.3678

你还可以通过在 betarnd() 函数的第三个和第四个参数中定义它来指定输出矩阵的大小。查看此链接以获取有关 betarnd() 函数的更多详细信息。

在 MATLAB 中使用 random() 函数生成随机数

如果要从指定的分布类型生成随机数,可以使用 MATLAB 中的 random() 函数。你必须将分布的名称定义为第一个参数,然后需要传递分布参数。例如,让我们使用 random() 函数使用 0 的 sigma 值和 1 的 mu 值生成正态分布的随机数。请参考下面的代码。

s = 0;
m = 1;
rn = random('Normal',s,m)

输出:

rn =

   -0.1649

你可以在函数中定义所需的分发名称。你可以使用多种类型的分布,例如:BetaBinomialExponentialGamma 等等。查看此 link 以了解有关 random 函数的更多详细信息。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - MATLAB Random

相关文章 - MATLAB Matrix