2008-10-28 8 views
4

Используя gnuplot 4.2, можно ли получить значение определенного столбца/строки и каким-то образом использовать это значение?Получение значения определенного элемента из другой строки в gnuplot

Например, предположим, что мой файл данных содержит следующие

#1 2 
7 13 
5 11 
23 17 
53 12 

Для простого сюжета, где столбец 1 является ось х и столбец 2 оси у, я бы: -

plot 'datafile' using 1:2 

То, что я пытаюсь сделать, - это нормализовать все данные в столбце 2 первым элементом в этом столбце (13). Есть ли способ сделать это в самом gnuplot (т. Е. Не прибегать к скриптовому языку или чему-то предварительно обрабатывать данные)?

Приветствия

ответ

0

объявление новая колонка, полный 13, а затем использовать:

участок 'файл данных' с использованием 1: ($ 2/$ 3)

2

Если базовое значение (например, 13) находится в в первой строке вашего набора данных вы должны будете делать то, что хотите, используя CVS-версию gnuplot.

Посмотрите на running averages demo. Вдоль этих строк вы можете написать пользовательскую функцию, которая сохраняет базовое значение в пользовательской переменной при вызове в первый раз и возвращает эту переменную при последующих вызовах.

(Так что демо перечислен только в CVS версии, я предполагаю, что требуемая функция не доступна в текущей версии.)

3

Использование бегущих средних демо, мне удалось добиться участка нормированы на первое значение второго столбца.

Переменная base используется для сохранения эталонного значения, а функция first инициализирует base в первой строке.

first(x) = ($0 > 0 ? base : base = x) 
plot file.dat u 1:(first($2), base/$2) 

Следует отметить, что это не было сделано с использованием gnuplot 4.2.

Редактировать: Обновлено с помощью совета Кристофа.

+1

Nice, +1. Чтобы быть более общим, можно проверить, что номер строки равен 0 для установки значения `base`:` first (x) = ($ 0> 0? Base: base = x) `. – Christoph 2015-02-06 08:03:45