Автор |
Сообщение |
|
Дата: 29 Окт 2012 10:21:41
#
В программе SPECTRAND (SPECTRum ANalysis via Derivation) реализован метод спектрального анализа дискретных стохастических рядов, имеющих зашумлённые гармонические компоненты - при этом корректно обрабатываются низкочастотный тренд и скачки в потоке данных.
При традиционном подходе, низкочастотный тренд даёт паразитные вклады в амплитуды спектральных компонент. Эти вклады устраняют - например, в методах, основанных на использовании вариации Аллана, или при быстром преобразовании Фурье - но при этом возможна обработка только таких рядов, в которых отсчёты разделены ОДИНАКОВЫМИ промежутками времени. Так, в национальных Службах времени-частоты, ради возможности спектрального анализа потоков данных, отсчёты специально делаются раз в час, раз в сутки - и при этом возможно нахождение лишь тех спектральных компонент, периоды которых кратны дискрету времени между отсчётами. Что касается скачка в ряде данных, то приходится искусственно, с долей произвола, делать "сшивку" такого ряда.
В нашем же методе перечисленные недостатки преодолены. Идея метода основана на том, что анализируется не исходный ряд, а его производная. Гармонические составляющие при взятии производной сохраняются, тренд превращается в постоянную составляющую, которую легко удалить, а скачок превращается в единичный выброс, который легко отбросить - без ущерба для последующего анализа. При этом периоды искомых спектральных компонент не заданы жёстко.
Программа SPECTRAND и её описание свободно доступны на http://newfiz.narod.ru/soft/soft.htm
Для широкого круга пользователей! |
|
Дата: 29 Окт 2012 15:17:40 · Поправил: RadioKoteg (29 Окт 2012 15:29:47)
#
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 градусов), то амплитуда этой компоненты в результирующем спектре будет значительно уменьшена - вплоть до самого нуля.
Пользователь должен понимать, что, для разрешения двух близких спектральных компонент, период их биений должен неоднократно укладываться на интервале времени, на котором анализируется функция. Чем большее число раз он уложится - тем лучше разрешение.
Возможно, в программе имеется ограничение на число точек ряда, которое она может обработать - но это ограничение нам неизвестно.
newfiz Фигня какая то. Вы не правильно указали выбранный файл, вы не правильно указали указатель на указатель знакомест игнорирования игнораторов, вы не правильно нажимаете на кнопки..
Мне не удалось запустить хоть что либо.
Получил такую вот картинку:
![](http://www.radioscanner.ru/uploader/2012/spectrand.jpg) |
Реклама Google
|
|
|
Дата: 29 Окт 2012 15:36:27 · Поправил: RadioKoteg (29 Окт 2012 15:53:42)
#
Упс сори.
Исходный файл для обработки программой SPECTRAND должен представлять собой текстовый файл (*.txt) - набор строк, содержащих отсчёты времени и соответствующие им значения анализируемой функции:
Я думал он вейвы анализирует. Сори за много букв.
Но с примера тоже не вышло ничего:
![](http://www.radioscanner.ru/uploader/2012/spectrand_.jpg) |
|
Дата: 29 Окт 2012 17:12:59
#
RadioKoteg,
что ж Вам так не везёт. Соответствие десятичного разделителя проверили?
Может, у Вас в компе запятая, а не точка? Тогда перекиньте в Глобал Дефинишнз,
Языки и стандарты - чтобы обработался демонстрационный файл.
Программа вполне рабочая и протестированная.
Судя по тому, что она у Вас хоть что-то делает, проблема не в несовместимости
с Вашей ОС.
Внимательно перечитайте Описание. там нет ничего лишнего.
И будет Вам щастье!
|
|
Дата: 29 Окт 2012 17:16:33 · Поправил: RadioKoteg (29 Окт 2012 17:48:47)
#
newfiz спасибо, пробовал и запятую и точку, у вас в файлах точка. Ждем кто тут в форуме что-то проанализирует. Программу тяжело переписать под нормальные вейв файлы или приложить конвертер?
|
|
Дата: 29 Окт 2012 17:54:19
#
RadioKoteg,
так получилось, или нет?
Пока предлагаю только то, что есть. Специально делалось под текстовый формат -
самый простой и универсальный.
|
|
Дата: 29 Окт 2012 19:46:44
#
Менять настройку десятичного разделителя в компьютере под каждую отдельную прогу, конечно, желающих найдётся мало :)
У меня получилось вот как. Сначала в "Блокноте" командой автозамены заменил в файле test2 все точки на запятые, и сохранил как test3.txt Этот новый тест-файл прочёлся, но чтобы спектр посчитался, пришлось и в окошке "центральный период" точку на запятую исправить.
Но всё равно не всё гуд. Когда ввёл центральный период 2,00, то пропала оцифровка вертикальной оси на спектре - не понятно, какой величины имеем фурье-амплитуды:
http://s58.radikal.ru/i161/1210/25/56536d6f562e.jpg
Кроме того, хорошая прога должна автоматом не пускать (а ещё лучше - автоматом исправлять) некорректный ввод. А здесь получается ввести отрицательный "центральный период", и прога послушно рисует "отрицательный спектр"
http://s008.radikal.ru/i304/1210/3e/0610a2b0774b.jpg
И бессмысленный слишком большой центральный период прогу не смущает:
http://s018.radikal.ru/i502/1210/82/434bfdc96c9a.jpg
И вообще не понятно, будет ли польза при анализе спектра реально сложного сигнала, если придётся всё время руками задавать значения "центральных периодов". Ведь хочется прежде всего увидеть спектр целиком, а затем только просматривать участки, причём - с регулируемым разрешением по частоте (и по амплитуде)...
Чтение файла данных, конечно, надо полностью автоматизировать. Не айс заставлять пользователя считать знакоместа; тем более, что может встретиться чередование коротких чисел и длинных (в том числе в экспоненциальной форме: с указанием степени десяти). Посмотрите, например, какие txt-файлы пишет (и читает!) Маткад - там не всегда выдерживается фиксированное количество знакомест.
Правильно вам подсказывают, что в радиотехнике исходные данные чаще всего поступают в формате .wav
Впечатление такое, что это ученическая работа. Ну, ничего, хорошо, есть что совершенствовать :)
Успехов! |
|
Дата: 29 Окт 2012 19:50:58
#
newfiz Получилось. Спасибо, заработало. Не знаю что было, на 5 компах не заработало, на домашнем все нормально. Разбираюсь, хотя я и не есть гуру в этой области.
|
|
Дата: 29 Окт 2012 23:34:47
#
|
|
Дата: 30 Окт 2012 01:20:30 · Поправил: RadioKoteg (30 Окт 2012 01:27:18)
#
mikasa76
Чего то эта прога и на электрониксе не пошла
прикольно, ход мыслей тот же.
что же мне делать с этим http://doris.kiev.ua/RS/FREQ/ ? Я вечность потрачу на перевод данных в текстовый файл..
Может автор хочет запатентовать свой метод, так для этого есть патентное бюро. Если он хочет поделиться этим методом с всем миром то пусть покажет на формулах или на примерах программ что он натворил.
Вот ребята из института акустики тоже напридумывали свои методы http://www.kfs.oeaw.ac.at/content/section/16/392/lang,8859-1/ , но они выдали это в законченном продукте, тоже с своими прибамбасами но ничего разобраться можно, они даже свой язык придумали и даже встроенное DSP. |
|
Дата: 30 Окт 2012 11:12:11
#
RadioKoteg я склоняюсь к мысли это что-то по мотивам дипломной работы или кандидатской, а форум в качестве полигона для апробации.
|
|
Дата: 30 Окт 2012 15:32:14
#
newfiz Сделайте пожалуйста конвертер с wav PCM 16 бит в текстовый формат.
|
|
Дата: 30 Окт 2012 15:40:50
#
mikasa76,
"Чего то эта прога и на электрониксе не пошла"
Неужели? Там пишут: "Создание конвертера для текстовых файлов не потребует много времени. Можно скрипт написать, а можно прямо в MATLAB сделать.
Главное иметь доходчивое описание формата файла в который надо сконвертировать."
"склоняюсь к мысли это что-то по мотивам дипломной работы или кандидатской, а форум в качестве полигона для апробации."
Думаете, выгоду для себя ищу? Напрасно. История такова.
Мне понадобилось проанализировать данные NORAD о параметрах орбит GPS.
Выяснил, что традиционными методами - эта задача не решается. Сбацал новый
метод, где недостатки традиционных - преодолены. Изумился - как до этого ещё
никто не додумался?! Короче, задачу свою с GPS решил. Классно получилось.
Так что апробаций мне не нужно. А вам предлагаю - потому что есть чем поделиться.
|
|
Дата: 30 Окт 2012 15:45:10
#
RadioKoteg,
"Сделайте пожалуйста конвертер"
Не знаю, когда руки дойдут. А самим - слабо?
У вас тут столько специалистов!
|
|
Дата: 30 Окт 2012 15:45:34
#
RadioKoteg
конвертер с wav PCM 16 бит в текстовый формат.
Здесь было нечто подобное.
Возможно, что есть ошибки и нет поддержки всех форматов, в "Куле+" потом правил много, а это было до него. |
|
Дата: 30 Окт 2012 16:33:07
#
newfiz как хотите, ваше право.
|
|
Дата: 30 Окт 2012 19:33:46 · Поправил: mikasa76 (30 Окт 2012 19:39:17)
#
newfiz Неужели? Там пишут: "Создание конвертера для текстовых файлов не потребует много времени. Можно скрипт написать, а можно прямо в MATLAB сделать.
Главное иметь доходчивое описание формата файла в который надо сконвертировать." Там кроме этого и другие мнения были, не в вашу пользу.
А вам предлагаю - потому что есть чем поделиться. спасибо, я привык пользоваться традиционными методами.
|
Реклама Google |
|