0

非常に大きな行列を fortran 6.5 にインポートする方法に問題があります。たとえば、私の .for ファイル マトリックスは 120 MB と非常に大きく、マトリックスは次の形式で与えられます。

  A(1,1)=691627.009959795*x(1)**2 - 3428.41117804251*x(1)*x(2) -
 # 156.91392014999*x(2)**2 + 428391.21915942*x(1)*x(3) - 953.4687530
 #88931*x(2)*x(3) + 66317.7918091961*x(3)**2 + 159956.172489745*x(1)
 #*x(4) - 427.609460294073*x(2)*x(4) + 49548.6129072796*x(3)*x(4) + 
 #9246.97185672321615*x(4)**2 - 34020.3929685886*x(1)*x(5) + 23.9104
 #515534*x(2)*x(5) - 10515.7437145023*x(3)*x(5) - 3939.86670772623

  A(1,2)=433427.009959795*x(1)**2 - 3444.41117804251*x(1)*x(2) -
 # 144.91392014999*x(2)**2 + 455391.21915942*x(1)*x(3) - 955.4687530
 #58931*x(2)*x(3) + 66317.7918091961*x(3)**2 + 159956.172489745*x(1)
 #*x(4) - 457.609460294073*x(2)*x(4) + 49548.6129072796*x(3)*x(4) + 
 #3246.97182321615*x(4)**2 - 14020.3929685886*x(1)*x(5) + 23.9104019
 #515534*x(2)*x(5) - 14515.7437145023*x(3)*x(5) - 3669.86670772623
 ...  

マトリックスは非常に大きいので、1 MB のマトリックスのほんの一部をコピーして Fortran シートに貼り付けることができます。その場合、120 MB を 120 の部分に分割し、すべての部分を合計して Fortran シートにコピーして貼り付ける必要があります。この完全な形式で fortran から行列を呼び出したりインポートしたりする方法は?

4

1 に答える 1

2

この問題を解決するためのアプローチの選択が不十分なようです。コメントの 1 つで言うように、これらの方程式を matlab で生成し、そこからこれらを fortran コードにエクスポートしています。おそらく、matlab での (おそらく繰り返される) 評価が遅すぎるためです。

より良い方法は、matlab に係数を生成させ、それらをhdf5 (matlab と fortran が読み書きできる高速でポータブルなバイナリ形式) などの移植可能な形式でディスクに保存することです。次に、係数をいくつかの配列にインポートするための Fortran コードを記述し、それらの配列を使用して必要な行列要素を計算します。

于 2012-05-10T08:55:22.230 に答える