MATLAB中的随机数,这段代码在做什么

时间:2019-06-12 19:56:17

标签: matlab random

我遇到了这段代码

基本上,我需要生成两个随机数向量,

这是代码,

T = 500
     e = normrnd(0,1,[2*T,k]);

        T = size(e,1);
        e = [e(ceil(rand(T,1)*T),:);e];

为什么此方法与ceil一起使用?关于为什么有人会使用此方法的任何想法?

1 个答案:

答案 0 :(得分:1)

  • Matlab索引从1开始,ceil()将转换0.8 to 1
  • Matlab索引只能使用整数值ceil()始终返回整数
   >> x = rand(3,1)*5

    x =

        4.3117
        4.4820
        0.9451

    >> ceil(x)

    ans =

         5
         5
         1

ceil(rand(m,n)*imax) and randi([1, imax], [m, n]) are equivalent. 

要确认使用ceil()的偏好,例如应该在命令窗口中键入open ceil来查看这些方法的文档

  • rand()
Copyright 1984-2017 The MathWorks, Inc.
  • ceil()
Copyright 1984-2005 The MathWorks, Inc.
  • randi()
Copyright 2008-2013 The MathWorks, Inc.

在早期的Matlab版本1984~2008a中,randi()不可用。

唯一的选择是使用rand() and ceil() or rand() and floor()生成均匀分布的随机整数。

  

简而言之,使用ceil() and rand()可以在   所有Matlab版本,而randi()仅适用于晚于2008b版本的版本。