Пользователю программы SPECTRAND

В программе SPECTRAND (SPECTRum ANalysis via Derivation) реализован метод спектрального анализа дискретных стохастических рядов, имеющих зашумлённые гармонические компоненты - при этом корректно обрабатываются низкочастотный тренд и скачки в потоке данных.

При традиционном подходе, низкочастотный тренд даёт паразитные вклады в амплитуды спектральных компонент. Эти вклады устраняют - например, в методах, основанных на использовании вариации Аллана, или при быстром преобразовании Фурье - но при этом возможна обработка только таких рядов, в которых отсчёты разделены ОДИНАКОВЫМИ промежутками времени. Так, в национальных Службах времени-частоты, ради возможности спектрального анализа потоков данных, отсчёты специально делаются раз в час, раз в сутки - и при этом возможно нахождение лишь тех спектральных компонент, периоды которых кратны дискрету времени между отсчётами. Что касается скачка в ряде данных, то приходится искусственно, с долей произвола, делать "сшивку" такого ряда.

В нашем же методе перечисленные недостатки преодолены. Идея метода основана на том, что анализируется не исходный ряд, а его производная. Гармонические составляющие при взятии производной сохраняются, тренд превращается в постоянную составляющую, которую легко удалить, а скачок превращается в единичный выброс, который легко отбросить - без ущерба для последующего анализа. При этом периоды искомых спектральных компонент не заданы жёстко. Подробнее метод описан в статье "Сидерические вариации параметров орбит GPS..." - http://newfiz.narod.ru/gps-vari.htm

Исходный файл для обработки программой SPECTRAND должен представлять собой текстовый файл (*.txt) - набор строк, содержащих отсчёты времени и соответствующие им значения анализируемой функции: те и другие должны представлять собой числа с десятичным разделителем (точкой или запятой). Для корректной считки данных, десятичному разделителю в файле должен соответствовать десятичный разделитель, заданный в компьютере (Панель управления, Язык и стандарты). В демонстрационном файле десятичным разделителем является точка. Отсчёты времени и значения функции в строке могут быть разделены пробелами (но не символами табуляции). Отсчёты времени должны представлять собой сквозную последовательность - значения времени, от начала и до конца файла, должны монотонно увеличиваться. Единицы времени и анализируемой функции - произвольные, шкалы графиков подстраиваются автоматически. Амплитуды спектральных компонент будут показаны в тех же единицах, что и анализируемая функция. От пользователя требуется знание формата исходного файла. Этот формат можно узнать при открытии файла текстовым редактором ("Блокнотом", WordPad, Norton Commander, Windows Commander, Word и др.). Требуется знать формат строк данных, поскольку для считки данных понадобится указать начальные и конечные знакоместа у отсчётов времени и значений функции. Предусмотрена возможность проигнорировать при считке несколько первых строк (содержащих, например, идентификаторы файла или заголовки данных - или пустые строки). Идеальным для считки является вариант, когда отсчёты времени и значения функции имеют фиксированные количества знакомест на фиксированных участках в строке. Впрочем, допускается обработка и набора строк с изменяющимися количествами знакомест у данных - если указать такие начальные и конечные знакоместа, чтобы, на протяжении всего файла, в заданную подстроку не попадало ничего кроме символов соответствующего числа и, возможно, предшествующих ему и последующих за ним пробелов. При соблюдении этого условия, допускается обработка набора строк с переменной длиной. В этом случае особо рекомендуется, в качестве конечного знакоместа для данных из самого правого столбца, указать не цифры, а специальное слово EOL - идентифицирующее последнее знакоместо в строке (см. демонстрационный исходный файл). За один прогон SPECTRAND обрабатывает один ряд "отсчёты времени - значения функции". Если строки содержат значения нескольких функций, то соответствующие ряды могут быть обработаны по очереди.

1. После открытия интерфейса программы SPECTRAND, следует прежде всего задать, в соответствующих редактируемых окошках, начальные и конечные знакоместа отсчётов времени и значений функции - как описано выше - а также, если требуется, задать количество первых строк, игнорируемых при считке данных (если в этом окошке задать 0 строк, то считка данных начнётся с первой строки). Далее следует выбрать обрабатываемый файл. Для этого кликнуть по кнопке ОБРАБОТАТЬ ФАЙЛ. Откроется стандартный пользовательский диалог открытия, исходной будет папка, в которой установлен SPECTRAND. После выбора, в диалоге открытия, желаемого файла и клика по кнопке Открыть, SPECTRAND сделает попытку открыть файл и считать данные. Если этот файл уже открыт другим приложением - например, текстовым редактором, то обычно это не мешает нормальной работе. Но иногда может возникнуть системная ошибка ввода-вывода "I/O error 32". Для избежания лишних проблем, рекомендуется, чтобы, при обращении к исходному файлу, он был закрыт. На современных персональных компьютерах обработка даже десятков тысяч точек занимает доли секунды, поэтому в программе SPECTRAND не предусмотрен индикатор процента выполнения процедуры считки. В случае проблемы при считке, SPECTRAND немедленно выдаст информационное сообщение (и закроет файл). В случае беспроблемной считки, SPECTRAND выведет на верхнюю диаграмму временную зависимость анализируемой функции (и закроет файл).

2. После клика по кнопке ПРОИЗВОДНАЯ, на вторую диаграмму выводится производная функции, приведённой на первой диаграмме. Как правило, эта производная имеет аномально большие выбросы. Эти выбросы следует удалить кликом по кнопке 3-SIGMA, в результате чего отбрасываются точки, отстоящие от среднего значения больше чем на три СКО. По кнопке 3-SIGMA можно кликать неоднократно - пока не получится визуально приемлемая для спектрального анализа функция: без аномально больших выбросов.

3. Для минимизации паразитных вкладов в амплитуды спектральных компонент, следует кликом по кнопке УБРАТЬ СМЕЩЕНИЕ сдвинуть график производной так, чтобы нулю соответствовало её среднее значение. Сдвинутый график появится на той же второй диаграмме (зелёным цветом). Визуализация корректности этой процедуры является залогом корректности последующего спектрального анализа.

4. В редактируемом окошке Центральный период следует задать период (в тех же единицах, что и отсчёты времени!) центральной спектральной компоненты, в окрестностях которой будет проводиться спектральный анализ - в диапазоне от 0.8 до 1.2 от центрального периода. При работе с запятой в качестве десятичного разделителя, значение следует задать через запятую.

5. После клика по кнопке СПЕКТР !, на третью диаграмму выводится результирующий спектр - с амплитудами спектральных компонент у функции, приведённой на ПЕРВОЙ диаграмме. Обратим внимание, что абсциссами спектральных компонент являются их периоды , а не частоты, т.е. высокочастотная область спектра находится слева.

6. Для исследования другого участка спектра следует задать другое значение центрального периода (п.4) и повторить п.5. Эти действия можно повторять многократно - и, таким образом, последовательно проанализировать функцию в огромном спектральном диапазоне.

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

8. Для обработки другого ряда данных в том же самом исходном файле, требуется задать новые значения знакомест данных (п.1), обработать файл вторично (кнопка ОБРАБОТАТЬ ФАЙЛ) и повторить всю процедуру анализа.

9. Корректный выход из программы - кнопка ВЫЙТИ.

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

Пользователь должен понимать, что если некоторая компонента испытывает инверсии фазы (скачки на 180 градусов), то амплитуда этой компоненты в результирующем спектре будет значительно уменьшена - вплоть до самого нуля.

Пользователь должен понимать, что, для разрешения двух близких спектральных компонент, период их биений должен неоднократно укладываться на интервале времени, на котором анализируется функция. Чем большее число раз он уложится - тем лучше разрешение.

Возможно, в программе имеется ограничение на число точек ряда, которое она может обработать - но это ограничение нам неизвестно.