Модель окружения алгоритма оценивания отношения сигнал-шум — различия между версиями
Korogodin (обсуждение | вклад) |
Korogodin (обсуждение | вклад) |
||
(не показаны 9 промежуточных версий 1 участника) | |||
Строка 5: | Строка 5: | ||
|author = [[Blog:Korogodin|Korogodin]] | |author = [[Blog:Korogodin|Korogodin]] | ||
|description = Тестбенч для алгоритма оценивания сигнал/шум + реализация алгоритма на Си | |description = Тестбенч для алгоритма оценивания сигнал/шум + реализация алгоритма на Си | ||
− | |image = | + | |image = 20111122_SNR1.png |
|imagesize = 250 | |imagesize = 250 | ||
|version = 1.0 | |version = 1.0 | ||
Строка 14: | Строка 14: | ||
|repository = [http://code.google.com/p/gnss-qcno-estimator/ Google Code] | |repository = [http://code.google.com/p/gnss-qcno-estimator/ Google Code] | ||
|category1 = Коррелятор | |category1 = Коррелятор | ||
− | |category2 = | + | |category2 = НИИ КП |
− | |category3 = | + | |category3 = Оценивание сигнал/шум |
|category4 = | |category4 = | ||
|category5 = | |category5 = | ||
Строка 34: | Строка 34: | ||
На модель возлагаются следующие функции: | На модель возлагаются следующие функции: | ||
− | * Имитировать поведение квадратурных сумм с учетом динамики отношения сигнал/шум, навигационной информации, ошибок следящих систем и т.п. (matlab) | + | * Имитировать поведение квадратурных сумм с учетом динамики отношения сигнал/шум, навигационной информации, ошибок следящих систем и т.п. (с помощью matlab-модели или телеметрии работы реального приемника) |
* Передавать результат имитации (квадратурные суммы с заданной разрядностью) в Си-программу, имитирующую поток исполнения в соответствующем приемнике, которая бы использовала универсальные функции блока оценивания сигнал/шум, а так же передавала в Матлаб результат вычислений. | * Передавать результат имитации (квадратурные суммы с заданной разрядностью) в Си-программу, имитирующую поток исполнения в соответствующем приемнике, которая бы использовала универсальные функции блока оценивания сигнал/шум, а так же передавала в Матлаб результат вычислений. | ||
* С помощью матлаба обрабатывать результаты оценивания сигнал/шум, выводить характеристики по точности и т.п. | * С помощью матлаба обрабатывать результаты оценивания сигнал/шум, выводить характеристики по точности и т.п. | ||
Строка 41: | Строка 41: | ||
Для этого: | Для этого: | ||
+ | * Выделить блок установки режима и параметров | ||
* Выделить блок когерентного накопления | * Выделить блок когерентного накопления | ||
− | * Выделить блок некогерентного накопления | + | * Выделить блок некогерентного накопления |
− | + | ||
− | + | ||
* Выделить блок расчета необходимых параметров и управления (платформозависимый). | * Выделить блок расчета необходимых параметров и управления (платформозависимый). | ||
− | В этом случае, | + | В этом случае, первые три блока оказываются платформонезависимыми. Им в качестве параметров нужно передавать когерентные накопления и флаг символьной синхронизации. |
− | + | ||
− | + | ||
== Ключевые элементы архитектуры == | == Ключевые элементы архитектуры == | ||
− | * Скрипт <code>scen_gen.m</code> запускает генерацию указанных в нем сценариев. Генераторы сценариев представляют представляют собой отдельные скрипты, лежащие в каталоге <code>scen_gen_cores</code>. Результатом работы генератора сценариев становятся <code>.mat</code>-файлы, содержащие выборки квадратурных компонент и набор прочих полезных векторов. | + | * Скрипт <code>scen_gen.m</code> запускает генерацию указанных в нем сценариев. Генераторы сценариев представляют представляют собой отдельные скрипты, лежащие в каталоге <code>scen_gen_cores</code>. Результатом работы генератора сценариев становятся <code>.mat</code>-файлы, содержащие выборки квадратурных компонент и набор прочих полезных векторов: |
+ | ** Вектор ''I'' размера 1x''K''; | ||
+ | ** Вектор ''Q'' размера 1x''K''; | ||
+ | ** Параметр ''K'' - размер векторов; | ||
+ | ** ''InSync'' - флаг наличия синхронизации для каждого ''k''-го такта; | ||
+ | ** ''FirstSync'' - импульс символьной синхронизации на первом такте символа; | ||
+ | ** ''LastSync'' - импульс символьной синхронизации на последнем такте символа; | ||
+ | ** Параметр ''SyncTemp'' - длительность одного символа в тактах; | ||
+ | ** ''Description'' - текст описания сценария; | ||
+ | ** ''qcno_ist'' - вектор отношения сигнал/шум, при которых производилось моделирование; | ||
+ | ** ''EpsW'' - вектор ошибок по частоте; | ||
+ | ** ''A_IQ'' - вектор значение амплитуды квадратур без учета рассогласований по параметрам; | ||
+ | ** ''A_IQ_eff'' - вектор значение амплитуды квадратур с учетом рассогласований по параметрам; | ||
+ | ** ''stdn_IQ'' - СКО шума квадратур; | ||
+ | ** ''Tc'' - интервал накопления в корреляторе; | ||
+ | ** ''Tf'' - интервал работы фильтра; | ||
+ | ** ''H'' - полоса СС за доплером. | ||
* Скрипт <code>testbench.m</code> запускает форму-интерфейс, в которой можно выбрать требуемый сценарий и передать его на выполнение в алгоритм оценивания отношения сигнал/шум. | * Скрипт <code>testbench.m</code> запускает форму-интерфейс, в которой можно выбрать требуемый сценарий и передать его на выполнение в алгоритм оценивания отношения сигнал/шум. | ||
+ | |||
+ | |||
+ | == Алгоритм оценивания == | ||
+ | |||
+ | === Описание алгоритма оценивания === | ||
+ | |||
+ | Исследования показали эффективность [[Blog:Korogodin/24.01.2012,_Оценивание_SNR_-_Beaulieu's_Method_vs_Moment_Method|скалярного метода оценивания]] отношения/сигнал шум. В данный момент его реализация заменила реализацию метода моментов. | ||
+ | |||
+ | [[File:20120124_Scalar_Scheme.png|thumb|600px|center|Эквивалентная "Схема Beaulieu", если нам нужно посчитать только амплитуду - усредненное скалярное произведение векторов]] | ||
+ | |||
+ | Все оценки, для общности, приводятся к 1мс квадратурам. Оценка дисперсии квадратур устанавливается извне и дополнительно не оценивается - её ошибка не влияет на оценку квадрата амплитуды, а вклад в ошибку оценивания SNR мал. | ||
+ | |||
+ | Оценка квадрата амплитуды описывается моделью: | ||
+ | ::<math>A^2_{IQ1, est} = A^2_{IQ1, effcos} + n_A,</math> | ||
+ | где | ||
+ | ::<math>A^2_{IQ1, effcos} = A^2_{IQ1} sinc^2 \left( \delta \omega T_{1ms} K_c / 2 \right) cos \left( \delta \omega T_{1ms} K_c \right) \rho^2 \left( \delta \tau \right)</math> | ||
+ | - эффективная амплитуда (приведенная к 1 мс) квадратур с учетом полного когерентного накопления (<math>K_c</math> - число 1мс когерентных накоплений) и разницы между скалярным произведением и квадратом, <math>A_{IQ1} = AL_{1ms}/2</math>, <math>n_A</math> - СВ с нулевым математическим ожиданием и дисперсией | ||
+ | ::<math>D_{SM} = \frac{4 A^2_{IQ1} \sigma^2_{IQ1} }{K_n K_c} + \frac{2 \sigma^4_{IQ1} }{K_n K^2_c}</math>. | ||
+ | |||
+ | Скалярный метод дает смещенные оценки эффективной амплитуды. Смещение это вызвано тем, что мы измеряем не средний квадрат амплитуды квадратур, а среднее скалярное произведение векторов в соседние моменты времени. Отсюда возникает множитель в виде косинуса. Уменьшение эффективной амплитуды примерно такое же, как если бы мы увеличивали время когерентного накопления в 2.7 раза. | ||
+ | |||
+ | [[File:20120124_EffCoeff.png|thumb|600px|center|Уменьшение среднего скалярного произведения при расстройке частоты]] | ||
+ | |||
+ | Тем не менее, даже при таком уменьшении можно было бы работать по 20мс отсчетам, если бы не цифровая информация и большие ошибки по частоте. | ||
+ | |||
+ | |||
+ | === Реализация алгоритма === | ||
+ | |||
+ | Для использования алгоритма к проекту следует подключить файлы <code>PowerMeasure.cpp</code> и <code>PowerMeasure.h</code>, а так же добавить команды вызова функции инициализации, когерентного накопления и управления приемником по результатам измерений в проект. | ||
== Пример исполнения == | == Пример исполнения == | ||
+ | |||
+ | === В прошивке [[НИИ КП]] === | ||
+ | |||
+ | [[File:20120128_qcno1.png|thumb|800px|center|Работа алгоритма в боевой прошивке НИИ КП (модель) при линейном снижении с/ш; артефакты при низком SNR - намечающийся срыв слежения; режим без учета ЦИ с 1мс когерентным накоплением]] | ||
+ | |||
+ | [[File:20120128_qcno2.png|thumb|800px|center|Те же условия, но 22 дБГц]] | ||
== См. также == | == См. также == |
Текущая версия на 15:07, 25 апреля 2013
![]() | |
---|---|
![]() | |
Описание | Тестбенч для алгоритма оценивания сигнал/шум + реализация алгоритма на Си |
Автор(ы) | Korogodin (Korogodinобсуждение) |
Последняя версия | 1.0 (11.10.2011) |
Загрузить | no link |
Хранилище | Google Code |
Категории | Коррелятор, НИИ КП, Оценивание сигнал/шум |
Содержание |
[править] Описание модели
Уже несколько лет с переменной интенсивностью разрабатывается алгоритм оценивания сигнал-шум. К нему переодически предъявляются новые требования, выдвигаются идеи по улучшению и доработки.
Возникла идея написать алгоритм, имитирующий внешнюю среду, в которой бы исполнялся алгоритм оценивания сигнал/шум.
На модель возлагаются следующие функции:
- Имитировать поведение квадратурных сумм с учетом динамики отношения сигнал/шум, навигационной информации, ошибок следящих систем и т.п. (с помощью matlab-модели или телеметрии работы реального приемника)
- Передавать результат имитации (квадратурные суммы с заданной разрядностью) в Си-программу, имитирующую поток исполнения в соответствующем приемнике, которая бы использовала универсальные функции блока оценивания сигнал/шум, а так же передавала в Матлаб результат вычислений.
- С помощью матлаба обрабатывать результаты оценивания сигнал/шум, выводить характеристики по точности и т.п.
Алгоритм блока измерения отношения сигнал/шум предлагается максимально унифицировать.
Для этого:
- Выделить блок установки режима и параметров
- Выделить блок когерентного накопления
- Выделить блок некогерентного накопления
- Выделить блок расчета необходимых параметров и управления (платформозависимый).
В этом случае, первые три блока оказываются платформонезависимыми. Им в качестве параметров нужно передавать когерентные накопления и флаг символьной синхронизации.
[править] Ключевые элементы архитектуры
- Скрипт
scen_gen.m
запускает генерацию указанных в нем сценариев. Генераторы сценариев представляют представляют собой отдельные скрипты, лежащие в каталогеscen_gen_cores
. Результатом работы генератора сценариев становятся.mat
-файлы, содержащие выборки квадратурных компонент и набор прочих полезных векторов:- Вектор I размера 1xK;
- Вектор Q размера 1xK;
- Параметр K - размер векторов;
- InSync - флаг наличия синхронизации для каждого k-го такта;
- FirstSync - импульс символьной синхронизации на первом такте символа;
- LastSync - импульс символьной синхронизации на последнем такте символа;
- Параметр SyncTemp - длительность одного символа в тактах;
- Description - текст описания сценария;
- qcno_ist - вектор отношения сигнал/шум, при которых производилось моделирование;
- EpsW - вектор ошибок по частоте;
- A_IQ - вектор значение амплитуды квадратур без учета рассогласований по параметрам;
- A_IQ_eff - вектор значение амплитуды квадратур с учетом рассогласований по параметрам;
- stdn_IQ - СКО шума квадратур;
- Tc - интервал накопления в корреляторе;
- Tf - интервал работы фильтра;
- H - полоса СС за доплером.
- Скрипт
testbench.m
запускает форму-интерфейс, в которой можно выбрать требуемый сценарий и передать его на выполнение в алгоритм оценивания отношения сигнал/шум.
[править] Алгоритм оценивания
[править] Описание алгоритма оценивания
Исследования показали эффективность скалярного метода оценивания отношения/сигнал шум. В данный момент его реализация заменила реализацию метода моментов.
Все оценки, для общности, приводятся к 1мс квадратурам. Оценка дисперсии квадратур устанавливается извне и дополнительно не оценивается - её ошибка не влияет на оценку квадрата амплитуды, а вклад в ошибку оценивания SNR мал.
Оценка квадрата амплитуды описывается моделью:
где
- эффективная амплитуда (приведенная к 1 мс) квадратур с учетом полного когерентного накопления ( - число 1мс когерентных накоплений) и разницы между скалярным произведением и квадратом,
,
- СВ с нулевым математическим ожиданием и дисперсией
.
Скалярный метод дает смещенные оценки эффективной амплитуды. Смещение это вызвано тем, что мы измеряем не средний квадрат амплитуды квадратур, а среднее скалярное произведение векторов в соседние моменты времени. Отсюда возникает множитель в виде косинуса. Уменьшение эффективной амплитуды примерно такое же, как если бы мы увеличивали время когерентного накопления в 2.7 раза.
Тем не менее, даже при таком уменьшении можно было бы работать по 20мс отсчетам, если бы не цифровая информация и большие ошибки по частоте.
[править] Реализация алгоритма
Для использования алгоритма к проекту следует подключить файлы PowerMeasure.cpp
и PowerMeasure.h
, а так же добавить команды вызова функции инициализации, когерентного накопления и управления приемником по результатам измерений в проект.