gnuplot - вычитание спектров

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

batan
Сообщения: 72

gnuplot - вычитание спектров

Сообщение batan »

имеется экспериментальный спектр возбуждения люминесценции на который накладывается след от лампы. Так же есть спектр самой лампы в этой области. Собственно возникает вопрос: как из спектра возбуждения в gnuplot во время построения вычесть спектр лампы?
спектр возбуждения в файле

Код: Выделить всё

X    Y
300    74630
301    76330
302    74390
303    74880
304    77450
305    76750
306    76480
307    77550
308    78290
309    79880
310    80580
311    82370
312    79730
313    81970
314    83420
315    82370
...........


спектр лампы в таком же файле

Код: Выделить всё

X    Y
300    0,000780999893322587
301    0,000800000037997961
302    0,000829000025987625
303    0,000850999960675836
304    0,00087699992582202
305    0,000896000070497394
306    0,000921000028029084
307    0,000946999993175268
308    0,000972999958321452
309    0,000992000102996826
310    0,00103199994191527
311    0,00105799990706146
............

где Х - длина волны, а У - интенсивность излучения. Буду признателен гуру за помощь!
Спасибо сказали:
Аватара пользователя
korax
Сообщения: 30
ОС: Debian 7, LMDE, Mint 15 Olivia

Re: gnuplot - вычитание спектров

Сообщение korax »

А почему бы не вычесть одно из другого ДО построения графика? Если нужна в результате именно разность?
Не говоря уж о том, а какой смысл имеет из величин порядка 10**4-10**5 ВЫЧИТАТЬ величины порядка 10**(-3)-10**(-4)?
Спасибо сказали:
batan
Сообщения: 72

Re: gnuplot - вычитание спектров

Сообщение batan »

korax писал(а):
10.04.2012 17:05
А почему бы не вычесть одно из другого ДО построения графика? Если нужна в результате именно разность?
Не говоря уж о том, а какой смысл имеет из величин порядка 10**4-10**5 ВЫЧИТАТЬ величины порядка 10**(-3)-10**(-4)?

в силу чистоты надо хранить данные в том виде, в каком они получены. значения такие по одной просто причине - в этом участке нет сигнала от лампы, считайте, что это нулевой фон.
как в гнуплоте вычесть одно из второго до построения?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21527
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: gnuplot - вычитание спектров

Сообщение Bizdelnick »

batan писал(а):
10.04.2012 18:07
в силу чистоты надо хранить данные в том виде, в каком они получены.

Ну так храните. Разность - в отдельном файле.
gnuplot - программа для построения графиков, а не обработки экспериментальных данных.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
korax
Сообщения: 30
ОС: Debian 7, LMDE, Mint 15 Olivia

Re: gnuplot - вычитание спектров

Сообщение korax »

Bizdelnick писал(а):
10.04.2012 18:17
gnuplot - программа для построения графиков, а не обработки экспериментальных данных.

Топикстартеру - если нужен комплексный монстр по обработке данных, рисованию и оформлению графиков (навроде Origin-а), то, может, присмотритесь к QtiPlot и SciDaVis?
Спасибо сказали:
ssh
Сообщения: 78
ОС: Debian

Re: gnuplot - вычитание спектров

Сообщение ssh »

вот только не надо монстров.

для вычитания в гнуплоте хорошо, если все данные у вас будут в одном файле, то есть чтоб был текстовый файл с содержимым строчек "х-координата", "первый спектр", "второй спектр". ваши данные к такому виду приводятся элементарно, например, с помощью стандартной утилиты past... (или paste? в общем, смотрим man) .

далее, рисуем в гнуплоте разность спектров чем-нибудь типа такой команды:
plot "file.dat" using 1:($2)-($3) ...
(здесь из второго столбца вычитается третий). кстати, аналогично можно умножать, делить и пр.
Спасибо сказали:
batan
Сообщения: 72

Re: gnuplot - вычитание спектров

Сообщение batan »

ssh писал(а):
10.04.2012 20:30
вот только не надо монстров.

для вычитания в гнуплоте хорошо, если все данные у вас будут в одном файле, то есть чтоб был текстовый файл с содержимым строчек "х-координата", "первый спектр", "второй спектр". ваши данные к такому виду приводятся элементарно, например, с помощью стандартной утилиты past... (или paste? в общем, смотрим man) .

далее, рисуем в гнуплоте разность спектров чем-нибудь типа такой команды:
plot "file.dat" using 1:($2)-($3) ...
(здесь из второго столбца вычитается третий). кстати, аналогично можно умножать, делить и пр.


да, такое знаю и пользуюсь. скорее интересовало, возможно ли сделать что-то типа
a = file1.txt($2);
b = file2.txt($2);
dif = a-b;
plot "file1.txt" u ($1):(dif)

самонадеянно конеш, но мот возможно что-то типа этого?
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: gnuplot - вычитание спектров

Сообщение eddy »

Советую воспользоваться Octave. В ней же и интерполяцию отсутствующих данных можно сделать. И вычисления.
И построение гнуплотом тоже.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
ssh
Сообщения: 78
ОС: Debian

Re: gnuplot - вычитание спектров

Сообщение ssh »

о, если советовать, тогда я тоже. python+numpy+matplotlib!
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: gnuplot - вычитание спектров

Сообщение Reboot »

Пайпы спасут человечество.
К сожалению, как мне показалось, об этом не так часто говорят, но в гнуплоте можно довольно легко нарисовать выхлоп любой программы, хотя способ далеко не очевидный. Зато он в хелпе находится быстро.
Соль в том, что если в системе есть пайпы, то файл нужно назвать "< command" и в качестве данных будет использован результат работы этой команды.
В данном случае конструкция будет типа:

Код: Выделить всё

plot "< paste file1 file2" u 1:($3-$4)

Естественно нужно чтобы первые столбцы были идентичны.
Как-то так.
P.S. но гнуплот всё равно не очень для обработки. Я для скриптованной обработки данных взял бы GNU R
Мой компьютер зовут Марвин
Спасибо сказали:
batan
Сообщения: 72

Re: gnuplot - вычитание спектров

Сообщение batan »

Reboot писал(а):
11.04.2012 15:29
Пайпы спасут человечество.
К сожалению, как мне показалось, об этом не так часто говорят, но в гнуплоте можно довольно легко нарисовать выхлоп любой программы, хотя способ далеко не очевидный. Зато он в хелпе находится быстро.
Соль в том, что если в системе есть пайпы, то файл нужно назвать "< command" и в качестве данных будет использован результат работы этой команды.
В данном случае конструкция будет типа:

Код: Выделить всё

plot "< paste file1 file2" u 1:($3-$4)

Естественно нужно чтобы первые столбцы были идентичны.
Как-то так.
P.S. но гнуплот всё равно не очень для обработки. Я для скриптованной обработки данных взял бы GNU R

есть бумажный вариант справки. что-то около 200 листов текста. справка весьма посредственная и часто требует догугливания или ковыряния. выхлоп попробую попользовать.

забавы ради можете в гнуплоте попробовать

Код: Выделить всё

set terminal dumb 50 20
plot sin(x)
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: gnuplot - вычитание спектров

Сообщение Reboot »

Смысл справки в гнуплоте в том, что в ней есть поиск. т.е. ?команда или через хелп.
в осмысленности распечатки я сомневаюсь, да.
Мой компьютер зовут Марвин
Спасибо сказали: