repmatを使用するとエラーが発生します。私のMatlabバージョンは2017aです。 "要求された3711450x2726(75.4GB)配列が最大配列サイズを超えています..."まず、いくつかのコンテキスト。Matlab最適化におけるネットワーク形成と大規模配列
私はソーシャルネットワークデータの隣接行列を持っています.Dは2725x2725であり、1はエージェントiとjの間のリンクを示し、そうでない場合は0を示します。私は、ネットワーク形成モデルのための関数とサブ関数を提供されています。 K回帰(x変数)があります。このモデルでは、W = 0.5N(N-1)x Kのダイアド固有回帰行列Wを作成する必要があります。私のデータでは、これは3711450 x Kです。
主な機能には、2つのステップがあります。最初のステップは、ロジットからジョイントMLEを計算します。配列サイズの分散共分散行列の2番目の計算で問題があります。このステップでは、repmatを使用して3711450 x n(2725)の行列を作成する計算が行われます。
INFO = ((repmat((exp_Xbeta ./ (1+exp_Xbeta).^2),1,K) .* X)'*X);
exp_Xbetaは3711450 X Kであり、Xは、二クラスのバイト= 178171416と疎3711450 X 2725行列です。エラーはINFOで発生します。
Xを高次の行列に変換しようとしましたが、これまでのところ喜びはありませんでした。私はINFO行にスパースを追加しようとしましたが、やはり喜びはありません。誰もがクラスタに行くか、より多くのラムを得るのに足りないアイディアを持っていますか?私は何とかXを疎な行列からデータストア内の完全な行列に変換してから、高値を使ってデータストアを呼び出すことができますか?私はそれが可能な場合、それを行う方法を把握することができませんでした。
INFOが配列として構築されると、それは後でサブ関数の1つで使用されます。だから、それは呼び出し可能である必要があります。好奇心が強い場合、INFOは二次微分行列です。