我创建了以下数组:
array = zeros(64,1,10);
我想用随机数填充整个数组,其间隔在-1和1之间,使用rand函数。
max=1
min=-1
array(:,:,:) = ((max-min).*rand(64,1) + min);
答案 0 :(得分:3)
为什么不使用开箱即用的rand
来获取多维数据?
array = rand(64,1,10);
另外,请勿使用min
和max
作为变量名称。这些是MATLAB中的实际函数,因此您无意中用您的名字遮蔽函数。
根据您编辑的问题,您希望为3D数组生成-1
到1
之间的值。 rand
只生成介于0和1之间的数字,因此诀窍是将rand
的输出乘以2并减去1.因此:
array = 2*rand(64,1,10) - 1;
通常,您在上面写的公式会精确地转换您的数据,使其适合min
和max
。但是,我要提到的一个警告是,在进行此转换之前,需要在[0,1]
之间对数据进行规范化。因为rand
的输出已经证明了这一点,所以我们没有什么可担心的。
因此,如果您这样做:
minVal = -1;
maxVal = 1;
array = (maxVal-minVal)*rand(64,1,10) + minVal;
您已经实现了您想要开始的[-1,1]
限制。 maxVal - minVal
将变为2 1 - (-1) = 2
,而minVal
将变为-1
,因此您将减去1.因此,我之前使用的代码等同于你原来的帖子中有什么......只是它现在适用于3D(或任何形状......)数组!