第1个回答 2024-08-15
Matlab中的randn函数是一种生成正态分布随机数或矩阵的工具,它产生均值为0,标准差为1的随机数据。使用方法多样,例如:
Y = randn(n) 生成一个n x n的随机矩阵,若n不是整数,会返回错误。Y = randn(m,n)或Y = randn([m n]) 则生成一个m x n的随机矩阵。
对于多维数组,如Y = randn(m,n,p,...)或Y = randn([m n p...]),可以生成具有多个维度的随机数组。同时,根据现有矩阵的尺寸,Y = randn(size(A))可以生成与A具有相同维度的随机矩阵。
举个例子,R = randn(3,4) 将得到一个随机的3x4矩阵,如:1.1650 0.3516 0.0591...。若想指定均值和方差,可以先生成标准正态分布,然后调整:x = 0.6 + sqrt(0.1) * randn(5) 会得到一个均值0.6,方差0.1的5x5矩阵。
rand函数本身则生成(0,1)之间均匀分布的随机数,例如rand(3)*-2会生成一个3x3的矩阵,每个元素在-2到0之间;而要生成1到365之间的正整数,可以使用1+fix(365*rand(1,60));要随机取100个-1到1的数,可以是x = rand(1,100) * 2 - 1。