一次初始化多列數據我有興趣以相同的方式一次初始化多個列的資料。例如,我想透過 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 );