Модель окружения алгоритма оценивания отношения сигнал-шум — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(Новая страница: «{{Modeling|templatemode = |name = Модель окружения алгоритма оценивания отношения сигнал-шум |status ...»)
 
 
(не показаны 11 промежуточных версий 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:
  
 
Для этого:
 
Для этого:
 +
* Выделить блок установки режима и параметров
 
* Выделить блок когерентного накопления
 
* Выделить блок когерентного накопления
* Выделить блок некогерентного накопления
+
* Выделить блок некогерентного накопления  
* Выделить блок измерений квадратов по некогерентным суммам
+
* Выделить блок фильтрации
+
 
* Выделить блок расчета необходимых параметров и управления (платформозависимый).
 
* Выделить блок расчета необходимых параметров и управления (платформозависимый).
  
В этом случае, в первые четыре блока оказываются платформонезависимыми. Им в качестве параметров нужно передавать разрядность когерентных накоплений. Либо, возможно, приводить эту разрядность к какой-то константе на этапе передачи в некогерентное накопление. Тут сложность с ГЛОНАСС СТ - до выделения метки времени придется делить на 10, что не реализуется сдвигом.
+
В этом случае, первые три блока оказываются платформонезависимыми. Им в качестве параметров нужно передавать когерентные накопления и флаг символьной синхронизации.
 +
 
 +
== Ключевые элементы архитектуры ==
 +
 
 +
* Скрипт <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> запускает форму-интерфейс, в которой можно выбрать требуемый сценарий и передать его на выполнение в алгоритм оценивания отношения сигнал/шум.
 +
 
 +
 
 +
== Алгоритм оценивания ==
 +
 
 +
=== Описание алгоритма оценивания ===
 +
 
 +
Исследования показали эффективность [[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

Список всех моделей
Crystal Clear action run.png
Модель окружения алгоритма оценивания отношения сигнал-шум
20111122 SNR1.png
Описание Тестбенч для алгоритма оценивания сигнал/шум + реализация алгоритма на Си
Автор(ы) 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 запускает форму-интерфейс, в которой можно выбрать требуемый сценарий и передать его на выполнение в алгоритм оценивания отношения сигнал/шум.


[править] Алгоритм оценивания

[править] Описание алгоритма оценивания

Исследования показали эффективность скалярного метода оценивания отношения/сигнал шум. В данный момент его реализация заменила реализацию метода моментов.

Эквивалентная "Схема Beaulieu", если нам нужно посчитать только амплитуду - усредненное скалярное произведение векторов

Все оценки, для общности, приводятся к 1мс квадратурам. Оценка дисперсии квадратур устанавливается извне и дополнительно не оценивается - её ошибка не влияет на оценку квадрата амплитуды, а вклад в ошибку оценивания SNR мал.

Оценка квадрата амплитуды описывается моделью:

A^2_{IQ1, est} = A^2_{IQ1, effcos} + n_A,

где

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)

- эффективная амплитуда (приведенная к 1 мс) квадратур с учетом полного когерентного накопления (K_c - число 1мс когерентных накоплений) и разницы между скалярным произведением и квадратом, A_{IQ1} = AL_{1ms}/2, n_A - СВ с нулевым математическим ожиданием и дисперсией

D_{SM} = \frac{4 A^2_{IQ1} \sigma^2_{IQ1} }{K_n K_c} + \frac{2  \sigma^4_{IQ1} }{K_n K^2_c}.

Скалярный метод дает смещенные оценки эффективной амплитуды. Смещение это вызвано тем, что мы измеряем не средний квадрат амплитуды квадратур, а среднее скалярное произведение векторов в соседние моменты времени. Отсюда возникает множитель в виде косинуса. Уменьшение эффективной амплитуды примерно такое же, как если бы мы увеличивали время когерентного накопления в 2.7 раза.

Уменьшение среднего скалярного произведения при расстройке частоты

Тем не менее, даже при таком уменьшении можно было бы работать по 20мс отсчетам, если бы не цифровая информация и большие ошибки по частоте.


[править] Реализация алгоритма

Для использования алгоритма к проекту следует подключить файлы PowerMeasure.cpp и PowerMeasure.h, а так же добавить команды вызова функции инициализации, когерентного накопления и управления приемником по результатам измерений в проект.

[править] Пример исполнения

[править] В прошивке НИИ КП

Работа алгоритма в боевой прошивке НИИ КП (модель) при линейном снижении с/ш; артефакты при низком SNR - намечающийся срыв слежения; режим без учета ЦИ с 1мс когерентным накоплением
Те же условия, но 22 дБГц

[править] См. также

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты