一次初始化多列数据我有兴趣以相同的方式一次性初始化多个列的数据。例如,我想通过 N 行创建具有随机正态数据(均值 = x,stdev = y)的 M 列。任何帮助表示赞赏。谢谢。
质量和工艺工程回复:一次初始化多列数据额外的时间用于额外查找 x 和 y 999,999 次的值,而不是用于无论如何都必须完成的实际乘法。 您可以使用数字代替 x,y 并获取时间间隔,因为数字的计算结果没有在命名空间中进行查找。 下面的基准情况不包括乘法和加法,这可能会得到更接近您描述的 3/4 的答案。
q=j(size,size,randomnormal()); // 1.0
q=j(size,size,randomnormal(0,1)); // 1.1
q=j(size,size,randomnormal(x,y)); // 1.4
回复:一次初始化多列数据这是一个有趣的事情:
您可以使用以下方法节省一点时间
y * J ( M, N, randomNormal () ) + x
代替
J( M, N, 随机正态 (x, y) )。
原因是 J 函数实际上是一个循环......因此,在 J( M, N, randomnormal (x, y) ) 示例中,每次循环时都会选择一个标准随机法线,乘以 y 并添加到 x 以生成随机 N(x, y)。
在 y * J ( M, N, randomNormal () ) + x 示例中,生成所有标准随机法线,然后将整个矩阵乘以 y 并添加到维度相似的 x 矩阵。
这并不是一个巨大的差异,但在我正在研究的 1000x1000 矩阵中,第二种方法的运行时间约为第一种方法的 3/4。
回复:一次初始化多列数据添加到 Mark 提供的内容:随机正态分布 ( ) 可以在没有参数的情况下使用,也可以在有 2 个参数的情况下使用。
如果没有参数,您将获得 N(mean == 0, stddev == 1) 数据。 因此,Mark 的代码将为您提供一个包含 N(0,1) 数据的 MxN 表。
使用参数,随机正态 ( x, y ) 为您提供 N(mean == x, stddev == y) 数据。
由于您的帖子提到了 x 的均值和 y 的标准差,因此如果 x 不为 0 和/或 y 不为 1,您可以使用以下内容。
As Table ( J ( N, M, Random Normal ( x, y ) );
回复:一次初始化多列数据根据提供的有限信息,该脚本证明了这个概念。
Names Default to Here( 1 );
M = 10;
N = 30;
data = J( N, M, Random Normal() );
As Table( data );