0

私の最初の質問は、データをMathematicaを使って固定幅フォーマットでどのようにエクスポートするのですか?私の2番目の質問は、どのように私はほとんどの0を保存する必要があります。シグネチャを保存したまま固定幅のテキストファイルとしてMathematicaリストを書き出すには?

例えば、私は数が2未満桁仮数を有する場合、それもしながら、それはゼロパディングを介して2に整合され、詳細に

1.12300 11.12 111.123 
2.10  22.123 222.00 

としてテキストファイルに{{1.12300, 11.12, 111.123},{2.1, 22.123, 222}}を保存しますその仮数部に2桁を超える値があれば、それをそのまま保存します。 1.123001.123を区別することが重要です。 PaddingFormを使用すると、MathematicaはそれをそのままテキストファイルにPaddedForm[1.123, {4, 5}]として保存します。

+0

"11.12"のような数字は、一度キー入力または結果として返されるマシン精度バイナリが浮動小数点数であり、もはや「正確に」1112/100ではないことを理解することが重要です。詳しい情報はmathematica.stackexchange.comに行くべきですが、文字通り数十もの同様の質問があります。 – agentp

答えて

0

使用

data = {{1.12300``6, 11.12``3, 111.123``4}, 
     {2.1``2,  22.123``4, 222``2}}; 

tbl1 = ToString[TableForm[data]]; 
tbl2 = StringReplace[tbl, "\n\n" -> "\n"] 

1.12300 11.12 111.123 
2.1  22.123 222.0 

を得るためにあなたは、文字列のセットとして、あなたのデータを入力したくない場合は、次のようにする必要があり``を使用してデータの精度を指定します。 MathematicaのNumerical Precisionチュートリアルを参照してください。

0

これは何ですか?

listt = {{1.12300, 11.12, 111.123}, {2.1, 22.123, 222}} 

Export["C:/tcdata/list.txt", Flatten /@ listt, "Table"] 
1

データが文字列として受信されなければならないよう1.12300として数値に後続ゼロを維持するために。それで、それはそのように処理することができます。

data = "{{1.12300, 11.12, 111.123}, {2.1, 22.123, 222}}"; 

(* remove any whitespace *) 
d1 = StringReplace[data, " " -> ""]; 

(* split the lists *) 
d2 = StringSplit[StringTake[d1, {3, -3}], "},{"]; 

(* split the numbers *) 
d3 = StringSplit[d2, ","]; 

(* magnitude of number except zero *) 
mag[n_] := Floor[Log[10, Abs[n]]] + 1 

(* format accordingly *) 
d4 = Map[With[{x = ToExpression[#]}, 
    Which[x == 0, If[StringLength[#] > 4, #, "0.00"], 
     FractionalPart[100 x] == 0, 
     [email protected][x, {mag[x] + 2, 2}, 
     ExponentFunction -> (Null &)], 
     True, #]] &, d3, {2}]; 

(* pad output *) 
len = Max[StringLength /@ Flatten[d4]] + 2; 
d5 = Map[StringPadRight[#, len] &, d4, {2}]; 
d6 = StringJoin /@ d5; 
Export["output.txt", d6]; 
Import["output.txt"] 
1.12300 11.12 111.123 
2.10  22.123 222.00 
+0

はい、その例を生成しますが、固定幅形式ではなくタブを使用する必要があります。残念なことに、これは天文学データによく見られるフォーマットです。また、最初の要素を1.12300000に変更すると、コードが正しく動作しません。 – Miladiouss

+0

@mpourrah仕様書を書く場合、固定幅フォーマットを実装するのに問題はありません。パディングは興味深いものです - 頻繁に収穫する問題。最初の数値が1.12300000の場合、列の書式はどのようにする必要がありますか? –

+0

私は各列のどの要素が最も多くの文字を持っているかを知ることができます。 – Miladiouss

関連する問題