将随机数(介于-1和1之间)插入到多维数组中

时间:2014-11-20 16:55:56

标签: matlab

我创建了以下数组:

array = zeros(64,1,10);

我想用随机数填充整个数组,其间隔在-1和1之间,使用rand函数。

max=1
min=-1
array(:,:,:) = ((max-min).*rand(64,1) + min);

1 个答案:

答案 0 :(得分:3)

为什么不使用开箱即用的rand来获取多维数据?

array = rand(64,1,10);

另外,请勿使用minmax作为变量名称。这些是MATLAB中的实际函数,因此您无意中用您的名字遮蔽函数。


根据您编辑的问题,您希望为3D数组生成-11之间的值。 rand只生成介于0和1之间的数字,因此诀窍是将rand的输出乘以2并减去1.因此:

array = 2*rand(64,1,10) - 1;

通常,您在上面写的公式会精确地转换您的数据,使其适合minmax。但是,我要提到的一个警告是,在进行此转换之前,需要在[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(或任何形状......)数组!