我收到了一個使用repmat的錯誤。我的Matlab版本是2017年。 「請求的3711450x2726(75.4GB)數組超出了最大數組大小......」首先,有些上下文。Matlab優化中的網絡形成和大陣列
我有一個社交網絡數據的鄰接矩陣調用它D. D是2725x2725,其中1表示代理i和j之間的鏈接,否則爲0。我爲網絡編隊模型提供了一個功能和子功能。有K個迴歸因子(x個變量)。該模型需要形成W = 0.5N(N-1)×K的二元特定迴歸矩陣W.在我的數據中,這是3711450 x K.首先,我只選擇一個x變量,因此K = 1。
在主要功能中,有兩個步驟。第一步從logit中計算聯合MLE。在第二步計算具有數組大小的方差協方差矩陣時,我有一個問題。在這一步中,有一個計算使用repmat創建了一個3711450 x n(2725)矩陣。
INFO = ((repmat((exp_Xbeta ./ (1+exp_Xbeta).^2),1,K) .* X)'*X);
exp_Xbeta是3711450×K個和X是一個稀疏3711450 X 2725矩陣類雙字節= 178171416。 INFO發生錯誤。
我試過將X轉換成一個高矩陣,但迄今沒有喜悅。我已經嘗試在INFO行中添加稀疏信息,但再次沒有快樂。任何人有任何想法沒有去集羣或獲得更多的內存?我可以以某種方式將X從稀疏矩陣轉換爲數據存儲區內的完整矩陣,然後使用高位調用數據存儲區?如果可能,我一直無法弄清楚如何做到這一點。
一旦INFO被構造爲一個數組,它將在其後的子函數中使用。所以,它需要被調用。如果你很好奇,INFO是二階導數矩陣。