comm.OQPSKDemodulator

Демодуляция с помощью метода OQPSK

Описание

comm.OQPSKDemodulator object применяет импульсную фильтрацию формы к входной форме волны и демодулирует его с помощью метода квадратурного манипулирования сдвига фазы смещения (OQPSK). Для получения дополнительной информации смотрите Импульсный Формирующий фильтр. Вход представляет собой репрезентацию модулированного сигнала.

Для получения информации о задержках, понесенных обработкой пары модема, смотрите Задержки Модуляции.

Чтобы демодулировать сигнал, который является модулируемым OQPSK:

  1. Создайте comm.OQPSKDemodulator объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

oqpskdemod = comm.OQPSKDemodulator создает Систему демодулятора object™. Этот объект может совместно фильтр соответствия и десятикратно уменьшать форму волны и демодулировать его с помощью метода квадратурного манипулирования сдвига фазы смещения (OQPSK).

oqpskdemod = comm.OQPSKDemodulator(mod) создает Системный объект демодулятора с симметричной настройкой к объекту модулятора OQPSK, mod.

пример

oqpskdemod = comm.OQPSKDemodulator(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Пример: comm.OQPSKDemodulator('BitOutput',true)

oqpskdemod = comm.OQPSKDemodulator(phase,Name,Value) устанавливает свойство PhaseOffset созданного объекта к phase и наборы любой другой задал NameЗначение пары.

Пример: comm.OQPSKDemodulator(0.5*pi,'SamplesPerSymbol',2)

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Фаза возмещена от π/4 в виде скаляра в радианах. Смещение фазы применяется к нулевой точке сигнального созвездия перед задержкой квадратурного компонента. После мнимого компонента OQPSK задерживают сигнал, нормирован со степенью единицы.

Пример: 'PhaseOffset',pi/4 выравнивает нулевую точку точки сигнального созвездия QPSK на осях, {(1,0), (0, j), (-1,0), (0,-j)}.

Типы данных: double

Опция к выходным данным как биты в виде false или true.

  • Когда вы устанавливаете это свойство на false, объектные выходные параметры вектор-столбец целочисленных значений с длиной равняются количеству демодулируемых символов. Выходные значения являются целочисленными представлениями двух битов и лежат в диапазоне от 0 к 3.

  • Когда вы устанавливаете это свойство на true, объектные выходные параметры вектор столбца двоичных данных из битных значений. Длина выходного вектора является в два раза длиннее, чем количеством вводимых символов.

Типы данных: логический

Побитовое отображение сигнального созвездия в виде 'Gray'двоичный файл, или пользовательский числовой вектор с 4 элементами из целых чисел со значениями от 0 до 3.

УстановкаОтображение созвездия для Целых чиселОтображение созвездия для битовКомментарий

Gray

Отображение сигнального созвездия серо-закодировано.

Binary

Отображение сигнального созвездия для входного целого числа m (0 ≤ m ≤ 3) комплексное число e(j*(PhaseOffset+π/4) + j*2*π*m/4).

Пользовательский числовой вектор с 4 элементами из целых чисел со значениями от 0 до 3

Элементы [b c d] должны состоять из множества значений [0, 1, 2, 3] в любом порядке.

Типы данных: char | double

Фильтрация импульсной формы в виде 'Half sine', 'Normal raised cosine' | 'Root raised cosine', или 'Custom'.

Типы данных: char

Фактор спада фильтра приподнятого косинуса в виде скаляра от 0 к 1.

Зависимости

Это свойство включено, когда PulseShape является 'Normal raised cosine' или 'Root raised cosine'.

Типы данных: double

Отфильтруйте длину в символах в виде скаляра. Идеальный фильтр приподнятого косинуса имеет бесконечную импульсную характеристику. Однако, чтобы понять практическую реализацию этого фильтра, объект обрезает импульсную характеристику до FilterSpanInSymbols символы.

Зависимости

Это свойство включено, когда PulseShape является 'Normal raised cosine' или 'Root raised cosine'.

Типы данных: double

Отфильтруйте числитель в виде вектора-строки.

Зависимости

Это свойство включено, когда PulseShape является 'Custom'.

Типы данных: double
Поддержка комплексного числа: Да

Количество отсчетов на символ в виде положительного даже целое число.

Типы данных: double

Тип данных, присвоенный выводить в виде 'double'единственный, или 'uint8'.

Типы данных: char

Использование

Описание

пример

outsignal = oqpskdemod(waveform) возвращает демодулируемый выходной сигнал. Объект производит тот выходной символ для каждого входного импульса.

Входные параметры

развернуть все

Принятая форма волны в виде комплексного скаляра или вектор-столбца.

Типы данных: double
Поддержка комплексного числа: Да

Выходные аргументы

развернуть все

Демодулируемый сигнал, возвращенный как целочисленный вектор S-элемента N или битовый вектор, где N S является количеством отсчетов.

Принятая форма волны импульсной формы согласно свойствам PulseShape и SamplesPerSymbol настройки. Установка свойства BitOutput определяет интерпретацию принятой формы волны.

Типы данных: double

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Создайте модулятор OQPSK и пару демодулятора. Создайте объект канала AWGN, имеющий два бита за символ.

oqpskmod = comm.OQPSKModulator('BitInput',true);
oqpskdemod = comm.OQPSKDemodulator('BitOutput',true);
channel = comm.AWGNChannel('EbNo',4,'BitsPerSymbol',2);

Создайте калькулятор коэффициента ошибок. С учетом задержки между модулятором и демодулятором, набор ReceiveDelay свойство к 2.

errorRate = comm.ErrorRate('ReceiveDelay',2);

Обработайте 300 кадров цикличного выполнения данных через эти шаги.

  • Сгенерируйте векторы с 100 элементами случайных двоичных данных.

  • OQPSK-модулируйте данные. Кадры данных обрабатываются как 50 демонстрационных систем координат 2-битных двоичных данных.

  • Передайте модулируемые данные через канал AWGN.

  • OQPSK-демодулируйте данные.

  • Соберите статистику ошибок на системах координат данных.

for counter = 1:300
    txData = randi([0 1],100,1);
    modSig = oqpskmod(txData);
    rxSig = channel(modSig);
    rxData = oqpskdemod(rxSig);
    errorStats = errorRate(txData,rxData);
end

Отобразите статистику ошибок.

ber = errorStats(1)
ber = 3.3336e-05
numErrors = errorStats(2)
numErrors = 1
numBits = errorStats(3)
numBits = 29998

Выполните модуляцию OQPSK и демодуляцию и применяйтесь, корень повысил фильтрацию косинуса до формы волны.

Системная инициализация

Задайте параметры симуляции и создайте объекты для модуляции OQPSK и демодуляции.

sps = 12; % samples per symbol
bits = randi([0, 1], 800, 1); % transmission data

modulator = comm.OQPSKModulator('BitInput',true,'SamplesPerSymbol',sps,'PulseShape','Root raised cosine');
demodulator = comm.OQPSKDemodulator(modulator);

Передача формы волны и прием

Используйте modulator объект применить модуляцию OQPSK и фильтрацию передачи к входным данным.

oqpskWaveform = modulator(bits);

Передайте форму волны через канал.

snr = 0;
rxWaveform = awgn(oqpskWaveform, snr);

Используйте demodulator объект применяться получает фильтрацию и демодуляцию OQPSK к форме волны.

demodData = demodulator(rxWaveform);

Вычислите частоту ошибок по битам, чтобы подтвердить качество восстановления данных.

delay = (1+modulator.BitInput)*modulator.FilterSpanInSymbols;
[~, ber] = biterr(bits(1:end-delay), demodData(delay+1:end))
ber = 0

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

Сгенерируйте OQPSK модулируемый сигнал.

sps = 4;
msg = randi([0 1],1000,1);
oqpskMod = comm.OQPSKModulator('SamplesPerSymbol',sps,'BitInput',true);
oqpskSig = oqpskMod(msg);

Добавьте шум в сгенерированный сигнал.

impairedSig = awgn(oqpskSig,15);

Выполните демодуляцию Мягкого Решения

Создайте QPSK эквивалентный сигнал выровняться синфазный и квадратура.

impairedQPSK = complex(real(impairedSig(1+sps/2:end-sps/2)), imag(impairedSig(sps+1:end)));

Примените согласованную фильтрацию к полученному сигналу OQPSK.

halfSinePulse = sin(0:pi/sps:(sps)*pi/sps);
matchedFilter = dsp.FIRDecimator(sps,halfSinePulse,'DecimationOffset',sps/2);
filteredQPSK = matchedFilter(impairedQPSK);

Чтобы выполнить мягкую демодуляцию отфильтрованного сигнала OQPSK используют qamdemod функция. Выровняйте отображение символа qamdemod с отображением символа, используемым comm.OQPSKModulator, затем демодулируйте сигнал.

oqpskModSymbolMapping = [1 3 0 2];
demodulated = qamdemod(filteredQPSK,4,oqpskModSymbolMapping,'OutputType','llr');

Больше о

развернуть все

Расширенные возможности

Представленный в R2012a