Главная » Хабрахабр » [Из песочницы] Способы обработки данных физического эксперимента

[Из песочницы] Способы обработки данных физического эксперимента

Несмотря на то, что в большинстве учебных заведений России лабораторные работы проходят в старом формате (когда бедный студент, собирая данные с доисторического оборудования, замеряя период колебаний с помощью таймера вручную, мучительно пытается найти объяснение нереалистичности данных), некоторые университеты закупили датчики, платы и (главное) компьютеры для удобства работы студентов. Безусловно, хорошее оборудование повышает точность эксперимента. Тем не менее, ваш покорный слуга множество раз сталкивался с нытьем однокурсников: «Ну и чем нам эти датчики дались? Легче ручками графики рисовать и время замерять, чем мучится с программированием на компухтере.» Признаюсь — у меня также был подобный период адаптации, который, однако, довольно быстро прошел. Итак, делюсь своим опытом.
image

GNUplot

Наверное, это самое простое, что нам могли показать в первую очередь (за исключением, пожалуй, Word или Excel). Обработка данных с помощью гнуплота предельно проста и не требует особых знаний в программировании, язык близок к алгоритмическому. Идеально подходит для начала работы над графической обработкой данных.

Как пользоваться

Пусть у нас есть файл с данными — один столбец со значениями измерений какого-то параметра. Назовем этот файл data.dat. Мы знаем, что данные представляют собой нормальное распределение, пускай это будет распределение масс партии шурупов. Наша задача заключается в определении среднего значения массы шурупа. Мое решение заключается в построении гистограммы по данным и дальнейшей ее аппроксимации кривой $f(x) = ae^\frac^2}{b}$. Ниже привожу пример кода такого построения:

bin_width=0.1
set boxwidth 0.9*bin_width absolute
bin_num(x)=floor(x/bin_width)
rounded(x)=bin_width*(bin_number(x)+0.5)
plot ‘data.dat’ using (rounded($1)):(1) smooth frequency with boxes
set table ‘table.dat’
replot #построение новой таблицы нужно, чтобы не покалечить аппроксимацией исходные данные
unset table
f(x)=a*exp(-(x-c)**2/b)
a=6#для точной аппроксимации необходимо "прикинуть" параметры сглаживающей кривой
b=0.01
c=2
fit f(x) ‘table.dat’ using 1:2 via a, b, c
plot f(x), ‘data.dat’ using (rounded($1)):(1) smooth frequency with boxes

При аппроксимации будут определены значения a, b и c с достаточно хорошей точностью. В нашей задаче нетрудно догадаться, что параметр c и есть среднее значение массы измеряемых объектов. Таким образом, с помощью простого кода и некоторых соображений можно быстро проанализировать собранные данные.

Мои выводы о работе с GNUplot

В случаях, когда нужна быстрая графическая обработка большого количества данных (большого в рамках лабораторной работы), GNUplot подходит идеально. Тем не менее, иногда появляются баги, о природе которых приходится подумать. Рекомендую использовать новичкам для каких-то базовых работ, например, статистических исследований.

LabVIEW

Этот монстр предназначен для настоящих лабников! Чисто визуальная платформа для моделирования лабораторной работы. Сама собирает данные с ComPortов, сама их обрабатывает, сама строит динамические графики. Возможностей — уйма. Большинство инженеров работают именно на Labview. НО! Требует больших усилий, чтобы разобраться.

image

Мои выводы о работе с LabVIEW

Точно не для новичков! Если есть желание, можно посидеть пару дней и разобраться, после этого значительно сократится время обработки лабораторных работ, в которых вы можете использовать микроконтроллеры с датчиками (в моем случае это были лабораторные со всевозможными маятниками).
image

Python

Этот язык является отличной находкой для физиков. Чаще всего я использую его для решений задач вычислительной физики, к примеру, численное решение дифференциальных уравнений. Так же, как и гнуплот, этот язык хорош для графической обработки данных, обладает меньшим количеством багов и простотой синтаксиса (хотя и на гнуплот не жалуюсь). Лично мне больше нравится Python, но каждому — свое.

Интерполяция обычно применяется для получения приближенной формулы зависимости двух величин. В качестве примера работы с Python привожу интерполяцию по точкам многочленом Лагранжа, потому что под рукой не оказалось более наглядного примера анализа данных .

import numpy as np
import matplotlib.pyplot as plt
def f(x, y, t): lag = 0 for j in range(len(y)): n = 1 dn = 1 for i in range(len(x)): #Многочлен Лагранжа if i == j:#Чтобы знаменатель не обращался в ноль n = n * 1 dn = dn * 1 else: n = n * (t - x[i]) dn = dn * (x[j] - x[i]) lag = lag + y[j] * n / dn return lag
xk = np.linspace(-1, 1, 11)
yk = 1/(1+xk**2)
xnew = np.linspace(-1, 1, 200)
ynew = [f(xk, yk, i) for i in xnew] plt.title(u'Интерполяция по точкам')
plt.xlabel(u'x')
plt.ylabel(u'y')
plt.plot(xk, yk, '.', xnew, ynew)
plt.grid()
plt.show()

Мои выводы о работе с Python

Для меня Python является приоритетным. Гораздо больше возможностей, чем в GNUplot, не требует больших усилий, чтобы разобраться. Безусловно, использование Labview значительно профессиональнее, но так как мне лень его освоение требует внушительного количества времени, я предпочитаю осваивать все прелести Python.

Вместо заключения

В этом небольшом обзоре я решила поделится своим опытом использования некоторых программ для обработки данных. Надеюсь, он поможет вам в вашей исследовательской деятельности.

Успехов!


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Мир! Труд! iOS! Да здравствует оффер за 1 день

Мы рады анонсировать hiring event для iOS-разработчиков в московском офисе FunCorp. Всё просто: участник присылает нам тестовое задание до 13 мая, затем мы объявляем результаты участников и приглашаем авторов лучших решений к нам в офис 24 мая (где, собственно, и ...

Wi-Fi 6: что у 802.11ax внутри

В данном случае антенна — это уже не просто «железка», а сочетание аппаратной части и алгоритма выбора конфигурации. Очевидно, что технология MU-MIMO 8×8 должна поддерживаться устройством, а эффективность формирования отдельных пространственных лучей зависит от используемых производителями решений, в частности, направленных ...