Skip to content

doomofart/spectral_density_analyzer

Repository files navigation

Spectral Density Analyzer

Программа Spectral Density Analyzer представляет собой инструмент для построения и анализа спектральной плотности временных рядов. Принимая на вход один или несколько текстовых файлов с данными (должны содержать один столбец или два столбца, разделенных табуляцией), Spectral Density Analyzer строит файлы в формате .xlsx содержащие:

  • график исходного сигнала;
  • график спектральной плотности мощности сигнала (используя метод Уэлча);
  • график спектральной плотности мощности сигнала в логарифмических шкалах с основанием 10 с линией степенного тренда и уравнением тренда.

Программа написана на Python 3.8 с использованием следующих внешних библиотек:

  • pandas 1.4.2;
  • scipy 1.8.1;
  • prox_tv 3.3.0 (не поддерживается на Windows);
  • xlsxwriter 3.0.3.

Взаимодействие пользователя с программой осуществляется посредством редактирования конфигурационного файла config.ini. Рассмотрим пример такого файла:

config.ini

[SECTION1]
PATH = data/Poland_interp_v.dat
FILTERING = 0
WINDOW = triang

[SECTION2]
PATH = data/S001R01_1_output.dat
FILTERING = 1
FILTERED_FREQUENCY = 500
WINDOW = hamming

Конфигурационный файл может содержать одну или несколько секций, в которых указываются параметры:

PATH – путь до файла с данными. Файл должен представлять собой один или два столбца разделенных табуляцией;

WINDOW – тип окна, который будет использоваться при построении спектральной плотности мощности сигнала. Может принимать значения: boxcar, triang, blackman, hamming, hann, bartlett, flattop, parzen, bohman, blackmanharris, nuttall, barthann;

FILTERING – включает или отключает режим фильтрации частот исходного сигнала. Может принимать значения 1 или 0;

FILTERED_FREQUENCY – значение в герцах, частоты ниже которого будут удалены из исходного сигнала.

Использование двух последних параметров требует наличия библиотеки prox_tv, которая недоступна для Windows. Тем не менее, программа будет работоспособна под Windows, если игнорировать эти параметры, установив значение FILTERING=0. Количество секций в конфигурационном файле не ограничено: секции будут выполнены параллельно, а результаты выполнения будут сохранены в директории output/.