comm.OQPSKModulator

Модуляция с использованием OQPSK метода

Описание

Объект comm.OQPSKModulator модулирует входной сигнал с помощью смещения метода квадратурной фазы сдвига keying (OQPSK) и применяет фильтрацию формы импульса к выходу форме волны. Для получения дополнительной информации см. Раздел «Фильтр формирования импульсов» Выход является представлением модулированного сигнала в основной полосе частот.

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

Чтобы модулировать сигнал, использующий смещение квадратурной фазы сдвига манипуляции:

  1. Создайте comm.OQPSKModulator Объекту и установите его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

oqpskmod = comm.OQPSKModulator создает модулятор System object™. Этот объект применяет квадратурную фазу смещения сдвига манипуляции (OQPSK) модуляции и фильтрации формы импульса к входному сигналу.

пример

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

пример

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

Пример: comm.OQPSKModulator('BitInput',true)

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

Пример: comm.OQPSKModulator(0.5*pi,'SymbolMapping','Binary')

Свойства

расширить все

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

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

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

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

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

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

Опция предоставления входов в битах, заданная как false или true.

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

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

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

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

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

Gray

Отображение сигнальных созвездий закодировано Серым цветом.

Binary

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

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

Элементы [a 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' или 'single'.

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

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

Описание

пример

waveform = oqpskmod(insignal) возвращает сигнал с модуляцией основной полосы выходов. Форма выхода импульсная согласно строения свойствам PulseShape и SamplesPerSymbol.

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

расширить все

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

Установка свойства BitInput определяет интерпретацию входного вектора.

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

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

расширить все

Выходная форма волны, возвращенная как вектор. Сигнал выхода имеет форму импульса в соответствии с строением свойствами PulseShape и SamplesPerSymbol.

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

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем 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 при его создании.

Создайте демодулятор OQPSK, присвоив ему смещение фазы 12π.

phase = 0.5*pi;
oqpskdemod = comm.OQPSKDemodulator(phase)
oqpskdemod = 
  comm.OQPSKDemodulator with properties:

   Modulation
         PhaseOffset: 1.5708
       SymbolMapping: 'Gray'
           BitOutput: false

   Filtering
          PulseShape: 'Half sine'
    SamplesPerSymbol: 4

      OutputDataType: 'double'

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

oqpskmod = comm.OQPSKModulator(oqpskdemod)
oqpskmod = 
  comm.OQPSKModulator with properties:

   Modulation
         PhaseOffset: 1.5708
       SymbolMapping: 'Gray'
            BitInput: false

   Filtering
          PulseShape: 'Half sine'
    SamplesPerSymbol: 4

      OutputDataType: 'double'

Выполните 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