2016-11-19 68 views
-2

我使用的Fortran 95,现在我面对如下问题:如何组织从不同的数据文件的数据用Fortran

  • 我有8个数据文件与4列,每列一个,它们是由其他程序产生(每个文件包含不同组初始条件的微分方程的解)。
  • 第四列是我的x变量,第二列是我的f(x)
  • 所以,我想要的是创建一个新的文件与9列(其中x第一个f(x)其他列中的每个文件)。
  • 但是,每个文件对于x(及其各自的f)具有不同的值,如1.10,1.30和1.40中的一个,而其他中的1.15,1.25和1.42。
  • 因此,我可以带一个x中的“乐队”,比如[1.00; 1.20],然后在我的新文件中写入这个平均值作为x,然后在其下运行f(x)

但我无法管理如何做到这一点。

+0

从你的标签判断,你想用gnuplot来绘制你的数据?为什么不像这样绘制每个文件:'plot'file1.dat'u 4:2'? – 2016-11-19 22:25:14

+0

是的,我想绘制,但我也必须在其他程序中输入fs为相同的xs ... – atMalkyor

+2

它似乎要使用插值为所有数据集提供相同的x-vals。直到你有一些你遇到麻烦的代码时,这才真正超出了本网站的范围。 – agentp

回答

1

我会尝试用smooth csplines选择到一个临时文件,绘制文件:

set format x "%10.3f" 
set format y "%10.3f" 

set xrange [...] 
set samples ... 

set table "temp1.dat" 
plot 'file1.dat' using 4:2 smooth csplines 
unset table 

这工作,如果你能与样条插值生活。无法以csv格式打印线性插值点。你可能想学习一些Fortran(询问是否需要它来进行进一步的研究)来进行线性插值。或者其他任何编程语言。

要绘制一个命令检查例如答案的所有文件上 Loop structure inside gnuplot?

然后,在Linux上,你可以使用colrmpaste结合生成的数据。

cat temp1.dat | colrm 11 > x 
cat temp1.dat | colrm 1 11 | colrm 12 > y1 
cat temp2.dat | colrm 1 11 | colrm 12 > y2 
... 

paste x y1 y2 ... > combined.dat 

根据需要调整常量。

同样,学习编程语言也可能有所帮助。

+0

只有3种方法才能在物理学中取得好成绩... – Holmz