0

現在、Mathematica でいくつかの実験データを処理する作業を行っています。

基本的に同じことをしたいファイルがいくつかあります。現時点では、すべてをコピーして貼り付け、ファイル名を次のように変更するだけです。

rechn1 = Import[
   "/path/4He.H2O.MeV14460.ddd.gd.dat", "Table"];
r1 = Length[rechn1];
rechn1a = Take[rechn1, {9, r1}];
plotr1 = ListPlot[rechn1a]

rechn2 = Import[
   "/path/4He.H2O.MeV15000.ddd.gd.dat", "Table"];
r2 = Length[rechn2];
rechn2a = Take[rechn2, {9, r2}];
plotr2 = ListPlot[rechn2a]

rechn3 = Import[
   "/path/4He.H2O.MeV15670.ddd.gd.dat", "Table"];
r3 = Length[rechn3];
rechn3a = Take[rechn3, {9, r3}];
plotr3 = ListPlot[rechn3a]

等々。私は Mathematica に特に精通しているわけではないので、これは良い選択肢のように思えました。いくつかの数字をコピー、貼り付け、変更します。

ただし、このようなデータをさらに処理する必要があります。では、Mathematica にすべてのファイルを特定の方法で処理するように指示する方法はありますか? また、いくつかの詳細を変更することもできますか?たとえば、すべてを同じように処理しますが、プロットの PlotStyle またはタイトルは異なりますか?

このプロセスを少し自動化する方法を見つけるのは素晴らしいことです。現在、処理するファイルがたくさんあり、コピーと貼り付けはもはやオプションではありません.

ありがとう!

4

1 に答える 1

0

Mathematica ではいつものように、やりたいことを実行するさまざまな方法があります。ここに、あなたに合ったソリューションに組み立てることができるかもしれないいくつかの部分があります.

次のように、4 つの関数呼び出しのシーケンスをそれらすべての構成に置き換えることができます。

ListPlot[Drop[Import["/path/4He.H2O.MeV15670.ddd.gd.dat", "Table"], 9]]

これは最初は解釈するのがはるかに困難ですが (Mathematica には問題はありません),次の作業では使いやすくなり,ワークスペースが不要な一時変数で散らかるのを避けることができます.インポートされたデータ ファイルを呼び出す必要がないように、 yourTake[expr,{9,Length[expr]}]を同等のものに置き換えたことに注意してください。Drop[expr,8]Length

これを次のような関数に整理できます。

makePlot[fn_String] := ListPlot[Drop[Import[fn, "Table"], 8]]

次に、必要なすべてのファイル名を取得しましょう。現在の作業ディレクトリが「/path」の親であり、呼び出しが

hefiles = FileNames["4He.*.ddd.gd.dat", {"*"}, Infinity];

すべての入力ファイルの名前のリストを返します。makePlotすぐに明らかになる理由で関数を変更しましょう。

makePlot[ix_Integer, fn_String] := myPlots[ix] = ListPlot[Drop[Import[fn, "Table"], 9]];

今、あなたは書くことができます

Do[makePlot[i,heFiles[[i]]],{i,1,Length[heFiles}]

これは、構文が正しく、すべての括弧が一致していれば、すべてのプロットを 1 つのステートメントで作成できるはずです。として保存されmyPlots[1], myPlots[2], ...ます。

コマンドのオプションを設定したい場合はListPlot、の定義makePlotを次のように修正するだけです

makePlot[fn_String] := ListPlot[Drop[Import[fn, "Table"], 8],plotOption-> setting, plotOption2->setting2]

または、Mathematica の知識を飛躍的に高めたい場合は、Options関数を調べて、makePlotオプションを (オプションの) 引数として取り、それらを に渡すように変更できますListPlot

于 2013-01-24T15:16:04.267 に答える