Обнаружение сигнала на основе языка R
Содержание
Задание на курсовую работу…………………………………………………3
Введение…………………………………………………………
Раздел 1. Основы языка R……………………………………………..…….6
Раздел 2. Обнаружение сигнала……………………………
Приложение 1
Приложение 2
Литература
Задание на курсовую работу:
- Изучить язык программирования R.
- Исследовать алгоритмы обнаружения сигнала
Введение
Обнаружение полезных сигналов
на фоне шума и помех является одной
из основных проблем обработки сигналов
во многих информационных системах. Задача
обнаружения обычно решается на первой
стадией приема сигналов в радиолокационных,
гидроакустических и
Если статистические характеристики
полезного сигнала и
1.Метод усредненного
Следует однако отметить, что применение метода усредненного отношения правдоподобия, во-первых, требует априорного знания функций распределения неизвестных параметров полезного сигнала (или шума) и, во-вторых, фактически приводит к оптимальному решению "в среднем" для всех возможных реализаций полезного сигнала.
При таком подходе вид априорной
плотности вероятности
2. Метод обобщенного отношения
правдоподобия. При
Можно строго доказать, что при
большом отношении сигнал/шум
и/или при большом объеме выборки
(в случае длинных реализаций наблюдаемого
процесса) метод обобщенного отношения
правдоподобия является асимптотически
оптимальным. В настоящее время
достаточно хорошо разработаны асимптотические
аналитические методы вычисления пороговых
значений GLR статистик. Для коротких
выборок и малых отношений
сигнал/шум аналитические
РАЗДЕЛ 1. ОСНОВЫ ЯЗЫКА R
- Что из себя представляет пакет R
R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Язык создавался как аналогичный языку S, разработанному в Bell Labs и является его альтернативной реализацией, хотя между языками есть существенные отличия, но в большинстве своём код на языке S работает для среды R. Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (англ. Ross Ihaka) и Робертом Джентлменом (англ. Robert Gentleman) (первая буква их имён — R), на момент 2011 года язык и среда поддерживаются и развиваются организацией R Foundation.
R широко используется
для статистического
R доступен под лицензией
GNU GPL. Распространяется в виде
исходных кодов, а также
В R используется интерфейс
командной строки, хотя доступны и
несколько графических
R поддерживает широкий
спектр статистических и
Ещё одной особенностью R являются графические возможности, заключающиеся в возможности создания качественной графики, которая может включать математические символы.
1.2 «Плюсы» и «Минусы» R
Перечислим достоинства и недостатки пакета R.
«Плюсы»:
– R является свободно распространяемым программным обеспечением (ПО), каждый может его бесплатно скачать с сайта http://www.r- project.org;
– достаточно просто устанавливается под Windows, MacOS X, Linux;
– базовая комплектация R занимает немного места на жёстком диске и включает в себя все функции, необходимые для статистического анализа;
– для более серьёзной работы всегда можно дополнительно установить вспомогательные пакеты с необходимыми функциями;
– на данный момент разработаны пакеты, применимые практически во в всех областях знания, где используется статистика;
– можно работать с большими массивами данных (несколько сотен тысяч наблюдений);
– встроенная система помощи и подсказок;
– хорошие графические возможности представления результатов исследо- ваний;
– возможность самостоятельного написания необходимых функций;
– много свободной литературы по R.
Недостатки:
– в отличие от большинства коммерческих программ R имеет не графиче- ский интерфейс, а интерфейс командной строки, таким образом нужно знать необходимые для работы функции и синтаксис языка программи- рования;
– нет коммерческой поддержки (но есть международная система рассылки сообщений об обновлениях);
– довольно мало литературы по R на русском языке (в основном литера- тура на английском), но при желании можно найти в Интернете.
- Объекты и типы данных языка R
Каждый язык программирования
предполагает наличие одного или
нескольких типов данных. Тип данных
характеризует некоторое
Все манипуляции с данными в языке R основаны на векторах. Вектор представляет собой структуру, содержащую последовательность значений одного типа. На первый взгляд, может показаться странным такой подход к программированию, однако на практике он оказывается очень удобным. Если же возникает необходимость использования в программе скаляров, то их можно заменить единичными векторами, т. е. векторами содержащими только одно значение.
Элементы вектора могут принадлежать к одному из типов данных, определенных в языке R:
- numeric - числовой тип, который включает в себя как целые числа, так и дроби;
- integer - целочисленный тип;
- character - символьный тип данных, каждый элемент в таком векторе является последовательностью из одного или более символов. Следует отметить, что совокупность элементов символьного вектора не является единой строкой;
- complex - комплексный тип;
- logical - логический тип, принимает значения TRUE или FALSE.
Numeric
Объекты этого типа могут содержать только числа. Эквивалентные обозначения: double или real, последнее существует только для сохранения обратной совместимости со старым кодом. Таким образом, в языке R имеют место три варианта обозначения векторов, содержащих числа с плавающей точкой. Очевидно, что объекты данного типа созданы для выполнения математических операций. Проверка на принадлежность переменной типу numeric выполняется функцией is.numeric()
Integer
Этот тип создан для того, чтобы
обеспечивать совместимость с кодом,
на языках C или Fortran таким образом, чтобы
представить целочисленные
Character
Тип данных character создан для выполнения операций с символами. Символом может быть что угодно: буквы алфавита, доступные в той или иной кодировке, цифры, а так же любой другой символ, который пользователь сможет найти на своей клавиатуре. Понятно, что со строковыми векторами невозможно проводить никаких вычислений, даже если в них содержатся цифры. В языке R есть предопределенные константы 'letters' и 'LETTERS' которые содержат соответственно строчные и прописные буквы английского алфавита.
В тех случаях, когда с цифрами, содержащимися в строковых векторах необходимо провести вычисления их следует преобразовать в числовой тип функциями as.integer() или as.numeric(). Соответственно, если мы хотим преобразовать число в строку, то используется функция as.character(), а для выяснения типа переменной - is.character().
Complex
Комплексные векторы содержат комплексные числа. Больше об этом типе данных мне сказать нечего.
Logical
Логические переменные могут принимать только два значения TRUE (истина) и FALSE (ложь). TRUE и FALSE - зарезервированные слова языка R, обозначающие логические константы. Эти обозначения в программном коде можно заменять символами 'T' и 'F'. Если попытаться конвертировать логический вектор в вектор типа integer, то в результате все значения TRUE будут заменены на 1, а FALSE - на 0.
Объекты языка R
Вектор является объектом языка R и, как уже было сказано, может содержать компоненты только одного типа, а так же NA-значения, т. е. пропущенные значения, которые могут быть в векторе любого типа. Однако в R есть и другие объекты: матрицы, списки, таблицы, функции, факторы. Тем не менее, в основе всех этих типов объектов лежит базовый объект - вектор.
Каждый объект имеет ряд атрибутов, характеризующих его свойства. Основные атрибуты это тип объекта и его длина. Под типом объекта понимается тот тип данных, к которому принадлежат его компоненты. Например, вектор, содержащий числовые значения типа numeric, является объектом типа numeric. В свою очередь длина объекта - это количество элементов, которые он содержит. Для определения типа и длины объектов используются функции mode() и length() соответственно. Функция length() позволяет еще и задавать размер объекта, так строка length(x) <- 3 задает вектору x размер в три единицы. Если ранее в векторе x было более трех компонентов, то данное действие удалит все остальные значения, если же длина вектора была менее трех, то функция добавит недостающее количество NA-значений. Следует отметить, что даже пустой вектор принадлежит определенному типу, так пустой символьный вектор обозначается character(0).
Оба описанных атрибута называют внутренними свойствами объекта. Для того, чтобы получить все остальные, если они есть, необходимо использовать функцию attributes(). В том случае, когда мы хотим получить определенные атрибуты объекта не являющиеся внутренними используется функция attr().
Классы объектов
Один из атрибутов любого объекта - это класс. Принадлежность к тому или иному классу определяет способ представления данных пользователю, а также их обработку некоторыми функциями. Данный атрибут является символьным вектором, содержащим список классов, к которым относится данный объект. Пользователь может изменять значения этого вектора без каких-либо ограничений, при этом проверка на соответствие содержания этого атрибута и фактической принадлежность объекта некоторому классу не производится. Другими словами, можно задать любое, даже ничего не значащее, строковое значение атрибуту class через функцию class(). Следовательно, пользоваться этой возможностью следует крайне осторожно.
Матрицы
Матрица - это вектор, представленный в виде двумерного массива. Следовательно, как и вектор, матрица может содержать значения только одного типа данных. Для создания матрицы можно использовать функции matrix() или array(), указав в качестве аргумента исходный вектор, а также размерность массива для array() либо количество столбцов и строк для matrix().
Факторы
Фактор – это специальный тип объектов, предназначенный для работы с категориальными или порядковыми данными. Категориальные данные, или данные измеренные в номинальной шкале, не имеют количественного выражения. Примером таких значений могут быть названия городов или имена людей. Порядковые переменные отличаются от категориальных тем, что позволяют упорядочивать объекты. Типичный пример порядковой или ординальной переменной – уровень доходов человека: низкий, средний, высокий. Очевидно, что низкий ниже среднего, а средний ниже высокого. Однако величину различий порядковая шкала измерений, как и номинальная, установить не позволяет.
Объект класса factor можно получить из числового или строкового вектора с помощью функции factor(). Следует иметь в виду, что числовые векторы данная функция преобразует в строку, поэтому выполнение каких-либо арифметических действий с факторами полученными из чисел невозможно, что соответствует требованиям к данным, выраженным в качественной шкале измерений.
Может показаться, что факторы – это излишество, поскольку в R уже есть тип строковых данных character. Тем не менее, это не так. Объекты данного класса позволяют эффективно использовать категориальные и порядковые переменные. В отличие от строковых векторов, эти объекты имеют два аттрибута: levels и class. Аттрибут class содержит название класса factor, а levels – уровни фактора. Уровни фактора – это все уникальные значения переменной.
Списки
Список (list) – это класс, позволяющий хранить в одной переменной объекты одного или разных типов, в том числе и другие списки. Объекты, входящие в список, могут быть не только разных типов, но и разного размера.
Таблицы данных
Таблица данных (data.frame) – класс позволяющий представлять данные в табличном виде. Таблица представляет собой набор векторов одинаковой длины, где каждый вектор – это столбец таблицы. Столбцы могут содержать данные разных типов, но в пределах одного столбца допустимы только однотипные значения. По сути, таблица данных – это модифицированный список, в котором каждый элемент представлен в виде столбца таблицы, и все элементы одинаковой длины.
Функции
В языке R функции – это объекты, принадлежащие классу function. Создавая собственные функции пользователь может значительно облегчить свою работу. Следует отметить, что большинство функций, используемых в языке R на нем же и написаны.
РАЗДЕЛ 2. ОПТИМАЛЬНОЕ ОБНАРУЖЕНИЕ ПОЛНОСТЬЮ ИЗВЕСТНОГО СИГНАЛА
Пусть ожидаемый сигнал полностью известен, т.е. известны его форма, амплитуда, временное положение. Решающую функцию приемника обозначим через
Выберем решающую функцию так, чтобы весовая разность была бы максимальна. Так как , а
где и - плотности вероятности шума и смеси сигнала с шумом, то
где - отношение правдоподобия, показывающее, насколько правдоподобнее предположение о приеме сигнала, чем альтернативное предположение об его отсутствии. Для максимального значения необходимо, чтобы подынтегральное выражение было бы неотрицательным, что возможно при условии:
Таким образом, оптимальный алгоритм принятия решения приемником сводится к вычислению отношения правдоподобия и сравнения его с порогом .
Например, для белого гауссовского шума на интервале плотность вероятности равна
где - спектральная плотность мощности белого шума. Т.к. , то
и
Отношение правдоподобия
Т.к. - энергия сигнала, выделяемая в сопротивлении 1 Ом, а - значение взаимной корреляционной функции сигнала с шумом при , то можно записать
Таким образом, алгоритмы обнаружения полностью известного сигнала на фоне белого гауссовского шума таковы:
,
или
или
и, следовательно, схема оптимального приемника должна состоять из устройства, вычисляющего взаимную корреляционную функцию (ВКУ), и порогового устройства (ПУ). Эта схема показана на рис.1.
Рис. 1. Структурная схема оптимального приемника.
ПРИЛОЖЕНИЕ 1
Текст программы
hits <- rbinom(100,25,.6)
fa <- rbinom(100,25,.2)
miss <- rbinom(100,25,.4)
cr <- rbinom(100,25,.7)
sdtout <- sdt(hits,fa,miss,cr)
sdtout[1:3,]
sdt(hits,fa,miss,cr,meas=c("d"
sdt(hits,fa,miss,cr,meas=c("d"
HC <- function(hits,fas,misses,cr)
return((hits+cr-fas-misses)/(
HCsqrt <- function(hits,fas,misses,cr)
return(sqrt((hits+cr-fas-
HCstats <- sdt(hits,fa,miss,cr, meas={},newst=c(HC,HCsqrt))
HCstats[1:3,]
sdt(hits,fa,miss,cr, meas=c("d","A"), pmeans=TRUE)
sdt(hits,fa,miss,cr,meas=c("d"
sdt(hits,fa,miss,cr, meas=c("A"),pmeans=TRUE,trim=.
Результаты:
>sdtout[1:3,]
HR |
FAR |
d |
csdt |
A |
B |
lnbeta | |
1 |
0.63333 |
0.217391 |
1.121728 |
0.220169 |
0.797058 |
0.154316 |
0.246970 |
2 |
0.548387 |
0.310344 |
0.616460 |
0.1866428 |
0.694809 |
0.0728363 |
0.11505 |
3 |
0.708333 |
0.230769 |
1.284838 |
0.0938968 |
0.823760 |
0.0757134 |
0.120642 |
beta |
OR |
lnOR |
kappa |
phi |
Q |
eta |
PC | |
1 |
1.28014 |
6.21818 |
1.82747 |
0.40365 |
0.41414 |
0.72292 |
0.401022 |
0.698113 |
2 |
1.12193 |
2.69841 |
0.99266 |
0.23672 |
0.24005 |
0.45922 |
0.608759 |
0.616666 |
3 |
1.12822 |
8.09523 |
2.09127 |
0.47833 |
0.47871 |
0.78010 |
0.351467 |
0.740000 |
ПРИЛОЖЕНИЕ 2
Список использованной литературы
- Зарядов И.С. Введение в статистический пакет R: типы переменных, структура данных, чтение и запись информации, графика. Москва, 2010 год.
- Шипунов А.Б., Волкова П.А. Статистическая обработка данных в учебно-исследовательских работах. Москва, 2008 год.
- Шипунов А.Б. Справочная карта по R.
- http://r-analytics.blogspot.
com/ - http://vkontakte.ru/
club8142131 - http://cran.r-project.org/
- http://rss.acs.unt.edu/Rdoc/
library/signal/html/00Index. html

- Обновление материально-технической базы информационно-аналитического отдела ОАО «КамНИИКИГС» на 2009–2012 годы
- Обновление ОПФ
- Обновление основных средств в организации
- Обновление основных средств организации
- Обобщающая комплексная оценка деятельности организации
- Обобщающая оценка работы и результативности финансово-хозяйственной деятельности организации
- Обобщающая оценка финансового состояния и прогнозирования вероятности банкротства ОАО «Новойл»
- Обмен жилыми помещениями как институт жилищного права
- Обменный курс. Международное движение капитала. Торговый баланс
- Обменный курс рубля: факторы изменения, динамика, значение для успешного развития экономики России
- Обменный курс рубля: формирование и развитие
- Обналичивание денег как особенность теневой экономики
- Обнаружение выстрела
- Обнаружение одиночных ошибок в коде Хэмминга