サイズ(M)= 15000の値のdouble Mの配列があります
コマンド diag(M) を使用して、この配列を対角行列に変換する必要があります。
しかし、私は有名なエラーを受け取りますout of memory
オプション -nojvm を指定して matlab を実行し、メモリ領域を確保します
Windowsのoptin 3GBスイッチを使用
配列を倍精度に変換しようとしました
しかし、問題は解決しません
他のアイデアはありますか?
サイズ(M)= 15000の値のdouble Mの配列があります
コマンド diag(M) を使用して、この配列を対角行列に変換する必要があります。
しかし、私は有名なエラーを受け取りますout of memory
オプション -nojvm を指定して matlab を実行し、メモリ領域を確保します
Windowsのoptin 3GBスイッチを使用
配列を倍精度に変換しようとしました
しかし、問題は解決しません
他のアイデアはありますか?
完全な対角行列 (非常にまばらになります) を生成するよりも、おそらくやろうとしていることを実行するためのはるかに優れた方法があります。
2 億 2500 万の要素を持つ行列に他の行列を掛けると、非常に長い時間がかかります。
アルゴリズムを再構築して、次の事実を利用することをお勧めします。
diag(M)(a, b) =
M(a) | a == b
0 | a != b
時間とメモリを大幅に節約でき、お金を払ってくれる人は誰でも幸せになります。
対角行列は次のようになります。
行列の対角線に沿ったもの (行インデックスが列インデックスと等しいもの)を除くすべてのエントリはゼロです。この例を提供された値に関連付けますdiag(M) = A
。M(n) = An