常量
- 一些常量,在没有显式定义变量名的时候,i或者j表示虚数,pi表示π。如果我们定义了一个名字为i、j、pi的变量,那么i、j将不再表示虚数,pi不再表示π。因此我们用1i、1j、1pi来表示这些常量,这是绝对安全的。
- Inf表示正无穷,-Inf表示负无穷。
- NaN是not a number的缩写,比如我们输入0 / 0,则返回一个NaN。
随机数
在MATLAB中,我们用rand()函数来生成随机数。随机数用法参考文档即可。这里主要介绍rand()函数实现原理。
rand()函数是根据这样一个函数来生成随机数的:该函数值域为[0, 1],其分布极其密集、极其不规律,可能f(0.1)和f(0.100000000000001)的值相差很大。rand()函数在最开始随机生成一个a后,下一次执行rand()函数,将a代入该函数,得到一个新的随机数,用这个随机数更新a。以此循环,可以得到一个global list的表,记录rand()函数生成的随机数及其顺序。
然而,这有一个缺点,那就是第一个a是确定的,也就是说,global list是唯一的,这时,我们可以用rng()函数来定义一个seed,rand()函数会根据这个seed来生成随机数,这样global list就不唯一了。
rng全称random number generator,其接受一个非负整数参数,小于2^32的非负整数参数,如果参数为负数则报错,如果参数为小数则向下取整。
其生成器初始化选项如下:
0 用种子 0 初始化生成器。
正整数 用指定的正整数种子(如 1)初始化生成器。
'default' 用种子 0 初始化梅森旋转生成器。这是每个 MATLAB 会话开始时的默认设置。
'shuffle' 根据当前时间初始化生成器,在每次调用 rng 后会产生一个不同的随机数序列。
结构体 基于结构体中包含的设置初始化生成器,结构体包含字段 Type、Seed 和 State。