Я использую gnuplot, и у меня есть два отдельных файла данных, и я хотел бы разделить все значения оси x из набора данных 1 на каждое значение оси x с набором данных 2. То же самое с осью Y.Как я могу это сделать??

Могу ли я сделать это изнутри gnuplot?

1 ответ1

0

Вы можете сделать это из gnuplot, хотя может быть проще предварительно обработать ваши данные извне.

Фактически это очень похоже на внешнюю предварительную обработку данных с помощью некоторого сценария, который берет ваши данные и записывает объединенные данные в стандартный вывод. Синтаксис использования канала в gnuplot:

plot " < program arguments"

Я обычно использую AWK для таких целей. Чтобы решить вашу проблему, сценарий предварительной обработки должен как-то внутренне объединить два набора данных, а затем вычислить нужные значения. В AWK я бы сделал что-то вроде этого:

{
 if(secondfile)
   print $1, $2, values[$1,$2]/$3 
 else
   values[$1,$2]=$3
}
ENDFILE{secondfile=true}

Значения из первого файла сохраняются в массиве значений (secondfile равен false). Шаблон ENDFILE запускается в конце любого (здесь: первый) файла и переключает поведение основного правила на вывод координат x и y и разделенных значений (при условии, что у вас есть формат данных столбцов "xy value"). Хук ENDFILE поддерживается в текущем GAWK 4.0.

Окончательная команда сюжета может выглядеть так

plot "< awk '{if(secondfile) print $1, $2, values[$1,$2]/$3 ; else values[$1,$2]=$3} ENDFILE{secondfile=true}' file1 file2" using 1:2:3

(Я не до конца понял, как вы хотите вычислить величины, но вы можете сделать это аналогичным образом)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .