exponenta event banner

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

Модулировать сигнал методом M-PSK

Описание

PSKModulator Система object™ модулирует с использованием метода M-ary фазовой манипуляции (M-PSK). Выходной сигнал является представлением модулированного сигнала в основной полосе частот.

Для модуляции сигнала с использованием метода M-PSK:

  1. Создать comm.PSKModulator и задайте его свойства.

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

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

Создание

Описание

пример

mpskmod = comm.PSKModulator создает объект системы модулятора mpskmod, который модулирует входной сигнал с использованием способа М-арной фазовой манипуляции (М-PSK).

mpskmod = comm.PSKModulator(Name,Value) создает объект модулятора M-PSK mpskmod, каждое указанное свойство имеет заданное значение. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN).

mpskmod = comm.PSKModulator(M,phase,Name,Value) создает объект модулятора M-PSK mpskmod используя порядок модуляции, указанный в M. Объект PhaseOffset свойство имеет значение phaseа другим указанным свойствам присваиваются указанные значения.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Число точек в созвездии сигнала, указанное как положительный, целочисленный скаляр.

Фаза нулевой точки созвездия в радианах, заданная как конечный действительный скаляр.

Параметр ввода в битах, указанный как числовой или логический 0 (false) или 1 (true).

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

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

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

Битовое отображение созвездия сигналов, указанное как 'Gray', 'Binary', или 'Custom'.

  • 'Gray' - используйте это значение для указания отображения кодированной серым цветом комбинации сигналов.

  • 'Binary' - Целое число m должно находиться в диапазоне [0, РоRоrder - 1] и соответствовать комплексному значению exp (j (PhaseOffset + 2ų m/РоRоrd))

  • 'Custom' - это значение используется для указания сопоставления сигнальной совокупности с помощью свойства CustomSymbolMapping.

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

Таможенное кодирование созвездия, определенное как вектор ряда или вектор колонки ценностей в диапазоне [0, ModulationOrder - 1]. Длина этого вектора должна быть равна значению свойства PerformedOrder. Первый элемент этого вектора соответствует точке созвездия под углом PhaseOffset, при этом последующие элементы идут против часовой стрелки. Последний элемент соответствует точке созвездия под углом - 2π/ModulationOrder + PhaseOffset.

Зависимости

Чтобы включить это свойство, задайте для свойства SymbolMapping значение 'Custom'.

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

Тип выходных данных, указанный как 'double', 'single' или 'Custom'.

Свойства с фиксированной точкой

Тип данных выходного сигнала с фиксированной точкой, указанный как numerictype объект с его Signedness свойство имеет значение Auto. Чтобы создать объект этого типа, используйте numerictype (Конструктор фиксированных точек).

Зависимости

Чтобы включить это свойство, задайте для свойства OutputDataType значение 'Custom'.

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

Описание

mpsksignal = mpskmod(insignal) модулирует входной сигнал с помощью метода M-PSK. Выходной сигнал является модулированным M-PSK сигналом основной полосы частот.

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

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

Входной сигнал, определяемый как вектор столбца целых чисел или битов. Вектор должен иметь длину NS, где NS - количество выборок.

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

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

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

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

M-PSK модулированный сигнал основной полосы частот, возвращаемый как вектор.

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

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

release(obj)

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

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

Примеры

свернуть все

Модулируйте 8-PSK сигнал, добавляйте белый гауссов шум и постройте график сигнала для визуализации эффектов шума.

Создайте object™ системы модулятора M-PSK. Порядок модуляции по умолчанию для объекта - 8.

pskModulator = comm.PSKModulator;

Модулируйте сигнал.

modData = pskModulator(randi([0 7],2000,1));

Добавление белого гауссова шума к модулированному сигналу путем пропускания сигнала через канал аддитивного белого гауссова шума (AWGN).

channel = comm.AWGNChannel('EbNo',20,'BitsPerSymbol',3);

Передача сигнала по каналу AWGN.

channelOutput = channel(modData);

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

scatterplot(modData)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

scatterplot(channelOutput)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Изменить EbNo свойство до 10 дБ для увеличения шума.

channel.EbNo = 10;

Передача модулированных данных через канал AWGN.

channelOutput = channel(modData);

Постройте график выхода канала. Вы можете видеть эффекты повышенного шума.

scatterplot(channelOutput)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Создайте 16-PSK модулятор и демодулятор System objects™ которые используют пользовательское отображение символов. Оцените BER в канале AWGN и сравните производительность с теоретической системой PSK с серым кодированием.

Создайте пользовательское сопоставление символов для схемы модуляции 16-PSK. 16 целых символов должны иметь значения от 0 до 15.

custMap = [0 2 4 6 8 10 12 14 15 13 11 9 7 5 3 1];

Создайте пару модулятора 16-PSK и демодулятора с пользовательским отображением символов, определенным массивом. custMap.

pskModulator = comm.PSKModulator(16,'BitInput',true, ...
    'SymbolMapping','Custom','CustomSymbolMapping',custMap);
pskDemodulator = comm.PSKDemodulator(16,'BitOutput',true, ...
    'SymbolMapping','Custom','CustomSymbolMapping',custMap);

Отображение совокупности модуляторов.

constellation(pskModulator)

Figure contains an axes. The axes with title Constellation: 16-PSK,Custom Mapping,PhaseOffset=0.3927rad contains 19 objects of type line, text.

Создайте системный объект канала AWGN для использования с 16-кратными данными.

awgnChannel = comm.AWGNChannel('BitsPerSymbol',log2(16));

Создайте объект частоты ошибок для отслеживания статистики BER.

errorRate = comm.ErrorRate;

Инициализируйте векторы моделирования. Величина Eb/N0 варьируется от 6 до 18 дБ в 1 дБ.

ebnoVec = 6:18;
ber = zeros(size(ebnoVec));

Оцените BER, модулируя двоичные данные, передавая их через канал AWGN, демодулируя принятый сигнал и собирая статистику ошибок.

for k = 1:length(ebnoVec)
    
    % Reset the error counter for each Eb/No value
    reset(errorRate)
    % Reset the array used to collect the error statistics
    errVec = [0 0 0];
    % Set the channel Eb/No
    awgnChannel.EbNo = ebnoVec(k);
    
    while errVec(2) < 200 && errVec(3) < 1e7
        % Generate a 1000-symbol frame
        data = randi([0 1],4000,1);
        % Modulate the binary data
        modData = pskModulator(data);
        % Pass the modulated data through the AWGN channel
        rxSig = awgnChannel(modData);
        % Demodulate the received signal
        rxData = pskDemodulator(rxSig);
        % Collect the error statistics
        errVec = errorRate(data,rxData);
    end
    
    % Save the BER data
    ber(k) = errVec(1);
end

Генерирование теоретических данных BER для канала AWGN с использованием berawgn функция.

berTheory = berawgn(ebnoVec,'psk',16,'nondiff');

Постройте график смоделированных и теоретических результатов. Характеристики BER 16-PSK модуляции моделируемого пользовательского отображения символов не так хороши, как теоретическая кривая прогнозирования для кодов Грея.

figure
semilogy(ebnoVec,[ber; berTheory])
xlabel('Eb/No (dB)')
ylabel('BER')
grid
legend('Simulation','Theory','location','ne')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Simulation, Theory.

Алгоритмы

Блок выводит сигнал основной полосы частот, отображая входные биты или целые числа на комплексные символы в соответствии со следующим:

sn (t) = exp ((2n + 1M)); n∈{0,1,..., M − 1}.

Это применимо, когда используется естественный двоичный порядок. Другим распространенным отображением является кодирование Грея, которое имеет то преимущество, что только один бит изменяется между соседними точками созвездия. Это приводит к лучшей производительности частоты битовых ошибок. Для 8-PSK модуляции с серым кодированием показано отображение между входным и выходным символами.

ВходПродукция
0 0 (000)
1 1 (001)
2 3 (011)
3 2 (010)
4 6 (110)
5 7 (111)
6 5 (101)
7 4 (100)

Ниже приведена соответствующая диаграмма созвездия.

Когда входной сигнал состоит из битов, блок принимает двоичные входы, которые представляют целые числа. Блок собирает сигналы с двоичным значением в группы битов log2 (M).

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

.

См. также

Объекты

Функции

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