коммуникация. OQPSKModulator

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

Описание

Коммуникация. Объект OQPSKModulator модулирует входной сигнал с помощью метода квадратурного манипулирования сдвига фазы смещения (OQPSK) и применяет импульсную фильтрацию формы к выходной форме волны. Вывод представляет собой репрезентацию модулированного сигнала.

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

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

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

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

Создание

Синтаксис

oqpskmod = comm.OQPSKModulator
oqpskmod = comm.OQPSKModulator(demod)
oqpskmod = comm.OQPSKModulator(Name,Value)
oqpskmod = comm.OQPSKModulator(phase,Name,Value)

Описание

oqpskmod = comm.OQPSKModulator создает Систему модулятора 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 Используя Системные объекты (MATLAB).

Фаза нулевой точки совокупности, переключенной от π/4 радианов, заданных как скаляр.

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

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

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

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

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

Побитовое отображение сигнального созвездия, заданное как 'Gray', 'Binary' или пользовательский числовой вектор с 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' или 'single'.

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

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

waveform = oqpskmod(insignal)

Описание

пример

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

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

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

Входной сигнал, заданный как вектор-столбец S-элемента N целых чисел или битов, где 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

Больше о

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

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

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