Mathematicaで1E-10などのe指数でFortran形式でファイルを出力・入力する方法

Mathematicaを使っていて、数値計算でよく使われる形式で数値を保存したファイルからデータを読み込んだり、そういう形式で出力したいときの方法です。

数値ファイルを出力する方法

Mathematicaでは、FortranForm[数字]というコマンドを使って、数字を変換することができます。例えば、

FortranForm[1.2*10^-5]=1.2e-5

となります。

https://reference.wolfram.com/language/tutorial/OutputFormatsForNumbers.html.ja?source=footer によると、他の表示変換についても可能なようです。

e指数形式で書かれた数値ファイルからMathematicaにデータを読み込む方法

C言語では%le、%lgなどの変換指定子で扱った数値はe指数で出力されます。やむをえず、このようにe指数で書かれたファイルをMathematicaで読み込んで利用しなければならないときはどうしたらよいでしょうか。

Mathematicaのドキュメントはもちろん、海外のQ&Aサイトも調べてみたのですが、なんといまのところ、Mathematicaではe指数を読み込むことはできないようです。

対処法として、データを

data=Import[“fileの場所”,”Table”]

として読み込んだ後に表示されるデータリストを、Mathematicaで扱えるように置換していきます。

まず、E → 10^ に置換。数値がE-5のように1以下の場合は、E- → 10^- と置換します。ファイル内に勝手に置換されて困るところがなければ、一括置換でいいと思います。心配であれば、1つずつ確認してから置換していってもよいでしょう。これで、例えば 5.36E-08は、5.36*10^-08と表示されます。

次に、 数値がE-5のように1以下の場合のみですが、10^-08のように10の冪乗が1桁の場合はMathematicaはわかってくれないので、10^-0 → 10^- で置換して冪乗の0を消します。これで、5.36*10^-08 → 5.36*10^-8 となります。

最後に、Mathematicaで以上のように置換すると、”5.36*10^-08″のように数値の前後に””が勝手に着くと思いますが、このままだとMathematicaが数値として扱ってくれないのでこれを直していきます。” → と置換します。置換後は、なにも書かないでください。空白スペースなど入れないように気をつけてください。

以上で、Mathematicaで扱える数値形式に変換できました。これをコピーして使ってください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です