Как построить средние значения шума в Gnuplot

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

2 на 3 сетки шумовых графиков со временем вдоль оси x и температурой вдоль оси y http://oi61.tinypic.com/2w54rd0.jpg

1 ответ

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

Поскольку вы не предоставляете свои файлы данных, я создал следующий файл, заполненный 1000 случайными значениями, полученными из $RANDOM переменная bash:

for i in `seq 1 1 1000`; do echo $RANDOM >> data; done

Это должно генерировать случайные данные в диапазоне 0 - 32767, то есть среднее значение должно составлять 16383,5 для достаточно репрезентативной выборки данных. Давайте построим это, чтобы увидеть, как выглядят необработанные данные:

plot "data" t "data", 16383.5 t "theoretical average"

Первая стратегия заключается в использовании гауссова ядра для сглаживания данных (smooth kdensity):

plot "data" smooth kdensity t "data", 16383.5 t "theoretical average"

Как видите, этот метод дает хорошее сглаживание в середине, но также учитывает отсутствие точек данных по краям.

Чтобы этого не случилось, я могу увеличить "локальность" сглаживания, предоставив пропускную способность для третьего столбца (в данном случае равную 10):

plot "data" u 0:1:(10) smooth kdensity t "data", 16383.5 t "theoretical average"

Усреднение подгонки требует fit:

fit a "data" via a
plot "data" t "data", a t "calculated average"

Другие вопросы по тегам