comm.PSKModulator

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

Описание

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

Для моделирования сигнала с помощью метода M-PSK:

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

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

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

Создание

Описание

пример

mpskmod = comm.PSKModulator создает модулятор Системный объект mpskmod, который модулирует входной сигнал с использованием метода M-арной фазы сдвига манипуляции (M-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, ModulationOrder - 1] и сопоставлено с комплексным числом exp (j (PhaseOffset + 2, m/ModulationOrder))

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

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

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

Зависимости

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

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

Выход данных, заданный как 'double', 'single' или 'Custom'.

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

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

Зависимости

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

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

Описание

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Создайте систему модулятора M-PSK object™. Порядок модуляции по умолчанию для объекта равен 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(jπ(2n+1M));n{0,1,,M1}.

Это применяется, когда используется естественное двоичное упорядоченное расположение. Другим общим отображением является кодирование Грея, которое имеет то преимущество, что только один бит изменяется между смежными точками созвездия. Это приводит к лучшей эффективности частоты битовой ошибки. Для 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