2016-11-19 5 views
-2

Я использую Fortran 95, и теперь я столкнулся с проблемой следующим образом:Как организовать данные из разных файлов данных в Fortran

  • У меня 8 файлов данных с 4-х столбцов каждого из них, они генерируются другой программой (каждый файл содержит решения дифференциальных уравнений для разных наборов начальных условий).
  • 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'? –

+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, вы можете объединить сгенерированные данные с использованием colrm и paste.

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