2012-05-08 10 views
0

非常に大きな行列をFortran 6.5にインポートする方法に問題があります。例えば、私の.FORファイルマトリックスは、非常に大きな120メガバイトで、行列は行列が非常に大きいと、私は、Fortranシートで/ペースト1メガバイトの行列のほんの一部をコピーすることができますフォームCompaq Visual Fortran 6.5で大きなデータをインポートまたは呼び出す方法

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 
... 

に与えられていますその場合、120パーツに120MBを割り当て、すべてのパーツの合計でFortranシートにコピー/ペーストする必要があります。 Fortranからこの完全な形式で行列を呼び出す方法とインポートする方法は?

+1

コード内にデータを入れようとしていますか?ファイルから行列データを読み込むコードを記述して、それに必要なものを作成する必要があります。 – milancurcic

+0

@ IRO-bot大きなサイズの行列をコンパック版で呼び出そうとしましたか?あなたはいくつかの例を入れることができますか? – Pipe

+3

いいえ、私はCompaq Fortranコンパイラを使ったことはありません。標準のFortranを書くだけで、コンパイラにかかわらず、大丈夫です(ほとんどの場合、少なくとも)。この質問は深刻な編集を必要とします。現在の形では非常にわかりにくいです。あなたが達成しようとしていることについてもっと具体的にお考えですか? – milancurcic

答えて

2

この問題を解決するには不適切な方法を採用しているようです。あなたのコメントの一つで言うように、あなたはmatlabでこれらの方程式を生成しており、そこからfortranコードにこれらの方程式をエクスポートしています - おそらくmatlabの(おそらく繰り返される)評価が遅すぎるためです。

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

+0

数字とテキストを含むプレーンな古いASCIIファイルでも、OPの元の計画よりも優れています。 –

+0

@DavePそれは可能ですが、それらは関連しています、私はすでに行列を持っていると仮定し、それらを扱いたいと思います。私は何ができますか? – Pipe

関連する問題