Специальные радиосистемы
Логин  Пароль   Регистрация   
На главную
наш магазин радио
объявления
радиорейтинг
радиостанции
радиоприемники
диапазоны частот
таблица частот
аэродромы
статьи
файлы
форум
поиск
Радиостанции Аргут в нашем магазине
Работаем с сигналами. Часть 1-я.
Руководство пользователя SV+
Начало » Цифровая обработка сигналов
Разместил: SergUA6 6.0
Авторские права © http://www.radioscanner.ru
Прикрепленные файлы 1. файл wav Пример (68 Kb)
Полезные ссылки 1. Программа SV+ последней версии
2. Обсуждение SV+ на форуме


Эфир полон различных загадочных звуков, при вращении ручки настройки попадаются шипящие, свистящие, рычащие, переливающиеся различными тонами сигналы, часть людей эти сигналы просто игнорирует, другая часть с легкостью разбирается в этой какафонии на слух, без колебаний называя что это за сигналы, кому принадлежат и какие параметры они имеют, ну одарил Господь их этим даром, что делать нам простым парням, подобным слухом не обладающим? Может в замен есть что нибудь у нас другое? Есть конечно есть, это как минимум желание и как максимум понимание, что не боги горшки обжигают, и если с ушами проблемы, а они безусловно есть, иначе чего мы тут делаем, значит будем обходиться без них или по крайней мере полагаться на них в последнюю очередь, чисто для тренировки. ;)

Существует целый парк софта позволяющий проводить анализ сигналов, само собой именно софт и призван помочь желающим разбирать и понимать структуры сигналов, обращаю внимание помочь. У меня не стоит задача "продвинуть" именно SV+, если у кого то в распоряжении есть иной софт позволяющий делать то же самое что и SV+, нет ни каких проблем, принципы и методы они не зависимы и не привязаны к конкретному софту. Сразу отметаются все так называемые анализаторы в реальном времени, это как правило превосходные показометры, они помогут скрасить время когда принимается сигнал, игрой красок, метанием стрелочек и палочек и прочими забавными вещами, за которыми приятно наблюдать, но уследить и понять, что же именно происходит невозможно. Оставим в стороне софт декодирующий, это отдельная история, скажу лишь, декодирование и анализ вещи сильно разные, как правило заявляются в декодирующем софте функции анализа, к сожалению, демодуляция/декодирование задачи настолько не простые, что на серьезные функции анализа у разработчиков просто не остается ни сил ни времени, а может и желания. Пример тому CODE-300, SkySweeper, Mix2 и т.д. В этой связи и обозначим цели и задачи анализа как такового. Если софт декодирующий "знает" с чем он работает, то софт анализирующий понятия не имеет, это может быть все что угодно, и по этому анализирующий софт как правило представляет набор тех или иных инструментов, с помощью которых декодирующему/демодулирующему софту нужно дать указание, что именно он будет принимать и декодировать и посредником тут выступает человек. Все ниже сказанное будет относится к SV+, но как уже говорилось это не принципиально, просто мне так удобнее, сразу же предупреждаю, прочтение само по себе ничего не даст, только попытки применять все на практике дадут сколь нибудь реальную пользу. Ну и приступим тогда, торопиться не будем, цель у меня не просто пробежаться по возможностям программы, а показать как именно все это делается, так, что это не одна статья.

После запуска программы вид ее такой:



OpenAudioFile - выбор стандартного аудио файла для загрузки, поддерживается много форматов, mp3 в том числе. В случае открытия стерео файлов будет предложено выбрать правый или левый канал, возможно ситуация когда файл не загрузится, причин на самом деле может быть много, самый простой выход переконвертировать файл любым сторонним софтом в нормальный чистый wav, загрузка которых гарантированна, лимитирован размер обрабатываемых отсчетов примерно 50 мгб, это чистые отсчеты, если файл ужат и его размер 10 мгб, не факт, что он загрузится весь, будут загружены 50 мгб декомпрессированных данных, в любом случае при ограничении загрузки будет предупреждение об этом, то есть пользователь будет в курсе.

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

Загрузим к примеру этот файл, появится дочернее окно собственно самого вьювера спектра:



Рассмотрим все элементы вверху

FFTSize - размер блока FFT с помощью которого строится спектрограмма.

Shift - сдвиг одного блока относительно другого в размерах FFTSize, то есть если Shift = Size значит начало следующего блока будет концом предыдущего, если Shift = Size/2, начало следующего блока будет серединой предыдущего, если Shift = Size/4, начало следующего блока будет в 1/4 от начала предыдущего и так далее, таким образом максимально плотно сигнал будет представлен при FFTSize = 64 и Shift = 64, то есть спектрограмма будет прорисована блоками по 64 отсчета и шагом в 1 отсчет, это не самая хорошая мысль, разрешение по частоте очень плохое, объемы вычислений весьма велики, но может потребоваться. Такая не совсем прозрачная(хотя как сказать, мне например все понятно) система позволяет довольно гибко и быстро выйти на наиболее удобный формат наблюдения.

IType - ImageType задает уровень в децибелах который можно различить на сонограмме, это есть результат компромисса, не удалось обеспечить качественное представление всего динамического диапазона сигналов на спектрограмме, чем ниже в децибелах значение тем лучше прорисованы слабые компоненты, при этом сильные если они есть могут вообще "залить" изображение, так что тут по ходу дела ориентируетесь.

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

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

AutoL - Automatic Level, в каждом блоке FFT происходит нормирование всего блока по самой сильной спектральной компоненте, что в ряде случаев позволяет лучше рассмотреть сигнал и тонкости его окружения, не всегда правда, но иногда полезно, работает совместно с IType, то есть IType задает тот максимум на который будет все вытягиваться, при уменьшении размеров блока(FFTSize) происходит грануляция изображения, будьте осторожны не примите ее за особенности сигнала, связано с тем, что с уменьшением размеров, блоки местами начинают очень сильно отличаться друг от друга. С верхней строкой элементов должно быть понятно.

Маркеры - маленькие зеленые черточки ;)

Есть два типа маркеров, маркеры частоты - горизонтальныие линии, и маркеры времени - вертикальные, совмещение маркеров выключает линии.
Маркеры являются активно рабочими эелементами, помимо самих измерений они определяют с каким участком спектра по частоте и/или по времени будут работать те или иные функции программы. Часть функций не включится пока не будут обозначены маркерами области обработки. Значения маркерных линий пишутся в соответствующих полях как обозначено. Маркеры работают с тем, что на виду, то есть они не привязываются к выделеному фрагменту на "века", такая концепция, что видим с тем и работаем.

Слайдер(ScrollBar) - используется для перемещения спектра(картинки) по оси времени(горизонтально) когда это возможно, а возможно это когда картинка больше окна в котором она отображена, на больших файлах может подтормаживать, если двигаться плавно но уверенно тормозов будет меньше, вообще большие файлы за 30-40 мегабайт для детального исследование пригодны мало, самое простое это нарезать файл на разумные фрагменты.

Если в области отображения спектра(не только на самом спектре) кликнуть правой кнопкой мыши, появится PoupUp Menu в котором два рабочих пункта FileSaveAs и WaveForm, первый позволяет сохранить результаты или как wav файл или как Data(просто 16 битные отсчеты), второй просмотреть и провести некоторые измерения по форме сигнала.

Нижняя группа кнопок и полей:



1 - Элементы "лупы", при нажатии на кнопку +, то что находится между маркерами частоты будет развернуто на всю вертикаль, кнопка - откатывет на один шаг назад, кнопка х - возвращает все к первоначальному виду, так как можно запутаться/забыть чего и сколько раз увеличивали.

2 - Элементы индикации и прерывания какого либо процесса, к примеру детектирования, индицируется то, что можно индицировать, например процесс вычисления АКФ не индицируется и остановить его нельзя, не то что бы его нельзя было вывести на индикатор в принципе, но это приличная возня которая оставлена на потом.

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

4 - Элементы фильтрации, первая кнопка, оставить все что между маркерами частоты(Select), вторая удалить все что между маркерами частоты(Reject), фильтр обрабатывает весь файл от начала до конца. Результат в новом окне. Полосы меньше 10 герц не вырезаются и не выделяются, они просто игнорируются.

5 - Выделение огибающей или амплитудное детектирование, обрабатывается весь файл. Результат в новом окне.

6 - Возведение сигнала в степень, по умолчанию сразу возводится во вторую. Результат в новом окне. Эта кнопка только запускает модуль возведения в степень, то есть инициирует начало работы с ним, все остальные действия дальше проводятся в нем. Условием инициализации явлется выделение макерами частоты участка спектра с которым будет проходить работа.

7 - Вызов модуля фазового вьювера, исторически сложилось, что он обслуживает две задачи, первая это вывод графического спектра с высоким разрешением(не хуже 0.7 Герц на пиксел) для точных измерений частот, и вторая собственно сам фазовый вьювер. Кнопка только запускает модуль, остальная работа проводится в нем. Обязательным условием запуска является выделение маркерами времени участка для которого строится спектр с высоким разрешением, желательным является выделение маркерами частоты спектра сигнала для которого вызывается фазовый вьювер. Размер формы этого модуля фиксирован, это следствие развития самой программы, изначально стояла задача написать просто вьювер спектра и разумеется не закладывались всякие примочки кроме тех о которых было известно заранее, фазовый вьвер не входил в эти планы, для него планировалось написать отдельную программу, но в последствии стало понятно, что лучше все же его встроить, и прошлось писать не как надо, а как получается с минимальными издержками.

8 - Вызов модуля AOF, позволяет измерить точный разнос частот и некоторые другие вещи. Обязательным условием вызова является выделение как маркерами частоты так и времени, связанно с тем, что вычисления в этом модуле весьма не быстры и всякая априорная информация только облегчает работу.

9 - Вычисление Авто Корреляционной Функции, обязательным условием является выделение фрагмента сигнала маркерами времени. Результат в новом окне.

10 - FSK демодулятор, обязательным условием запуска является выделение спектра сигнала маркерами частоты. Демодулирует до НЧ колебаний, то есть не битовый поток на выходе, а напряжение манипуляции, результат в новом окне. Условно демодулирует в общем.

11 - Ресемплер, передискретизирует запись на нужную частоту дискретизации указанную в поле, меньше чем 4000 Гц не работает, выше 1999999 тоже, работает не быстро(можно оптимизировать, пока руки не доходят, то есть это лечится) но точно. Не производится ни pre ни post фильтрация, это в расчете, что человек понимает если он с 22050 Гц передискретизирует на 8000 Гц, то нужно вырезать все, что выше 4000 Гц в исходном файле, тем более все под руками, а если не понимает то тогда что он вообще делает? Шутка, оставлено на потом, вместе с оптимизацией скорости подправлю.

12 - Создание фрагмента в новом окне, обязательно выделение участка сигнала маркерами времени.

На главной форме два нижних поля FreqDiscrtization и BitPerSample показывают значение для активного дочернего окна. Поле BitPerSample на самом деле всегда будет показывать 16 бит, так как я перестал делить файлы на 8-ми и 16-ти битные, переводя сразу в 16 бит. То есть только на этапе загрузки файла имеет значение какой формат имеет запись, в дальнейшем они равнозначны.

На этом описание основных компонентов программы завершается, предлагаю, до следующей статьи освоится с FFTSize, Shif в общем с верхней линейкой, поиграться с маркерами, с "лупой", так как возвращатся к ним уже вряд ли получится и придется, это базовые моменты, дальше нужно будет ориентироваться во всем этом быстро и без проблем, так что лучше потратить пару тройку дней на это сейчас, чем застрять в понимании процессов на мелочи, типа "а как это у него получилось", нет ни каких "секретных кнопок", все что получается у меня(о том что не получается, скромно промолчим) должно получаться у всех.

Добавлять комментарии могут только зарегистрированные, активировавшие регистрацию и не ограниченные в доступе участники сайта!
Файл создан: 15 Фев 2007 14:39, посл. исправление: 20 Фев 2007 12:58
© radioscanner.ru, miniBB® 2006 | загрузка: с.