55
Лекция 8 ЦИФРОВАЯ МОДУЛЯЦИЯ КВАДРАТУРНАЯ МОДУЛЯЦИЯ В предыдущей лекции рассматривались виды модуляция, когда подвергался только один из параметров фаза, либо частота. Однако можно изменять два параметра одновременно, за счет чего передавать два сигнала. 0 () ( )cos( ( )) St At t t ω ϕ = + Такую модуляцию называют амплитудно-фазовой, при этом два модулирующих колебания являются неравноправными, поскольку модулируют разные параметры несущего колебания. Для создания симметричности можно преобразовать форму представления сигнала. 0 0 () ( )cos( )cos () ( )sin( )sin () St At t t At t t ω ϕ ω ϕ = Т.о. сигнал представляется в виде суммы двух АМ колебаний с несущими 0 cos( ) t ω и 0 sin( ) t ω , сдвинутыми друг относительно друга на 90 0 . Амплитудные функции равны ( )cos ( ) A t t ϕ и ( )sin () A t t ϕ . Обозначив эти функции и можно перейти к уравнению: () at () bt 0 0 () ( )cos( ) ( )sin( ) St at t bt t ω ω = +

модуляция в примерах Матлаба

  • Upload
    -

  • View
    4.738

  • Download
    123

Embed Size (px)

Citation preview

Page 1: модуляция в примерах Матлаба

Лекция 8

ЦИФРОВАЯ МОДУЛЯЦИЯ

КВАДРАТУРНАЯ МОДУЛЯЦИЯ

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

0( ) ( )cos( ( ))S t A t t tω ϕ= +

Такую модуляцию называют амплитудно-фазовой, при этом два

модулирующих колебания являются неравноправными, поскольку модулируют разные параметры несущего колебания.

Для создания симметричности можно преобразовать форму представления сигнала.

0 0( ) ( )cos( )cos ( ) ( )sin( )sin ( )S t A t t t A t t tω ϕ ω ϕ= −

Т.о. сигнал представляется в виде суммы двух АМ колебаний с несущими

0cos( )tω и 0sin( )tω , сдвинутыми друг относительно друга на 900. Амплитудные функции равны ( )cos ( )A t tϕ и ( )sin ( )A t tϕ . Обозначив эти функции и можно перейти к уравнению:

( )a t ( )b t

0 0( ) ( )cos( ) ( )sin( )S t a t t b t tω ω= +

Page 2: модуляция в примерах Матлаба

Такое представление сигнала называется квадратурным, а способ модуляции

квадратурной амплитудной модуляцией (КАМ), в английской версии QAM (Quadrature Amplitude Modulation).

КАМ модуляция получила широкое распространение при передаче цифровой информации.

Комплексное представление синусоиды показывает, что синусоиду можно представить двумя взаимно ортогональными составляющими синфазной (вещественная) и квадратурной (мнимая), соответственно получаем два канала для модуляции I channel (Inphase) и Q channel (Qadrature).

0

0 0cos( ) sin( )i te t j tω ω ω= +

Page 3: модуляция в примерах Матлаба

Частотная манипуляция Обозначение: FSK - Frequency shift keying modulation Функции MatLab: fskmod, fskdemod

FSK – представляет собой модуляцию, когда в соответствие каждому символу ставится определенная частота, например в транкинговых системах стандарта МРТ 1327 использовались две частоты 1200 и 1800 Гц, соответствующие «0» и «1». Функция fskmod – модуляция

Y = FSKMOD(X,M,FREQ_SEP,NSAMP), где

X – модулирующая последовательность, д.б. целочисленная и представлена степеням 2. В простейшем случае при двухпозиционной модуляции это «0» и «1»; M – позиционность модуляции, соответственно Х представляется числами между «0» и «М-1»; FREQ_SEP – расстояние между соседними частотами (Гц), соответствующими символам; NSAMP – количество отсчетов на один символ, целое число больше 1

Y = FSKMOD(X,M,FREQ_SEP,NSAMP,FS), где

FS – частота отсчетов (Гц).

Y = FSKMOD(X,M,FREQ_SEP,NSAMP,FS,PHASE_CONT) , где PHASE_CONT – определяет непрерывность фазы при переходе от символа к символу: 'cont' – непрерывная фаза, 'discont' – непрерывность не выполняется (фаза разрывна), по умолчанию используется 'cont'.

Page 4: модуляция в примерах Матлаба

Y = FSKMOD(X,M,FREQ_SEP,NSAMP,Fs,PHASE_CONT, SYMBOL_ORDER), где

SYMBOL_ORDER – определяется двоичное представление символов: в прямом двоичном коде 'bin' (по умолчанию), 'gray' – используется код Грея.

Результат работы функции – комплексная частота (работа в baseband) Пример: M_fsk = 4; % Позиционность freqsep = 8; % Частотный сдвиг n_sample = 8; % Количество отсчетов на символ f_sample = 32; % Частота дискретизации In_data=randint(1000,1,M_fsk); Частотная манипуляция FSK Fsk_mod=fskmod(In_data,M_fsk,freqsep,n_sample,f_sample; L_Fsk_mod = length(Fsk_mod); % Просмотр спектра. freq = [-f_sample/2 : f_sample/L_Fsk_mod :... f_sample/2 - f_sample/L_Fsk_mod]; Sp_Fsk_mod = 10*log10(fftshift(abs(fft(Fsk_mod)))); figure(1); plot(freq,Sp_Fsk_mod);grid

Page 5: модуляция в примерах Матлаба

Функция fskdemod – демодуляция

Z = FSKDEMOD(Y,M,FREQ_SEP,NSAMP), где Y – модулированный сигнал fsk (комплексный); M – позиционность модуляции, соответственно Х представляется числами между «0» и «М-1»; FREQ_SEP– расстояние между соседними частотами (Гц), соответствующими символам; NSAMP – количество отсчетов на один символ, целое число больше 1

Page 6: модуляция в примерах Матлаба

Z = FSKDEMOD(Y,M,FREQ_SEP,NSAMP,Fs), где Fs – частота отсчетов (Гц).

Z = FSKDEMOD(Y,M,FREQ_SEP,NSAMP,Fs,SYMBOL_ORDER) Пример: % Формируется канал АБГШ EbNo=6; k=log2(M_fsk); Fsk_rx = awgn(Fsk_mod,EbNo+10*log10(k)- 10*log10(n_sample),'measured',[],'dB'); Fsk_demod = fskdemod(Fsk_rx ,M_fsk,... freqsep,n_sample,f_sample); % Подсчет количества ошибок [num,BER]=biterr(In_data,Fsk_demod) % Теоретичекий BER BER_theory=berawgn(EbNo,'fsk',M_fsk,'noncoherent') BER = 0.0190 BER_theory = 0.0158

Page 7: модуляция в примерах Матлаба

Визуализация процесса частотной манипуляции Пример f_1=1200; % Частота "1" f_0=1800; % Частота "0" seq=randint(10,1); % Модулирующая последовательность Ns=60; % Количество отсчетов T_symb=1/min(f_1,f_0); d_t=T_symb/Ns; t_symb=0:d_t:(T_symb-d_t); Sym_1=sin(2*pi*f_1*t_symb); Sym_0=sin(2*pi*f_0*t_symb); t_sim=0:d_t:length(seq)*T_symb-d_t; for i=1:length(seq) if seq(i)==1 mod_seq(:,i)=Sym_1; elseif seq(i)==0 mod_seq(:,i)=Sym_0; else disp('Unknow data format') end end mod=mod_seq(:); figure(2); plot(t_sim,mod);grid

Page 8: модуляция в примерах Матлаба

seq' = 0 1 0 1 1 0 0 1 0 0

Page 9: модуляция в примерах Матлаба

Последующие функции используют для модуляции и демодуляции новый класс, введенный в R14 modem objects.

Класс модем Класс модем введен для модуляции и демодуляции для следующих типов

модуляции DPSK, MSK, OQPSK, PSK, PAM, QAM, General QAM H = MODEM.<TYPE>(...), где TYPE – тип модуляции и демодуляции

Модуляция Y = MODULATE(H, X) Baseband модуляция сигнала данных X ( модулирующий сигнал) с

использованием модулятора, созданного в объекте H. Объект H должен относится к классу modem. Если H.InputType = 'Bit' , данные сигнала X должна быть бинарными (0 или

1). Число элементов в каждом из каналов сигнала X должно быть целым числом, кратным log2 (H.M). Для ввода X размерностью (R * log2 (H.M)) умноженное на C, выход Y будет содержать RxC символов. Каждое двоичное слово длины log2 (H.M) в канале представляет собой символ. Первый бит представляет собой старший бит (MSB), в то время как log2 (H.M)-й разряд представляет собой младшего бит (LSB).

Если H. InputType = 'Integer', данные сигнала X должна быть представлены целых числами от 0 до H.M – 1.

Сигнал данных должен представляться в виде многоканального сигнала. Столбцы X рассматриваются как отдельные каналы, а строки – временные

Page 10: модуляция в примерах Матлаба

отсчеты. Если X является вектором строкой, каждый элемент X рассматривается как часть отдельного канала.

Демодуляция Y = DEMODULATE(H, X) Baseband демодуляция модулированного сигнала данных X с

использованием демодулятора, созданного в объекте H. Объект H должен относится к классу modem. Если H.OutputType = 'Bit', выходной сигнал Y является бинарными (0 или 1).

Для ввода X, содержащего RxC символов выход Y будет размерностью (R * log2 (H.M))хC. Каждое двоичное слово длины log2 (H.M) в канале представляет собой символ. Первый бит представляет собой старший бит (MSB), в то время как log2 (H.M)-й разряд представляет собой младшего бит (LSB).

Если H.OutputType = 'Integer', выходной сигнал Y будет представлен целых числами от 0 до H.M – 1.

Если H.DecisionType = 'Hard decision', демодулятор будет выполнять функцию демодулятора с «жесткими решениями».

Если H.DecisionType = 'LLR', демодулятор будет выполнять функцию демодулятора с «мягкими решениями» и вычислять логарифма отношения правдоподобия (log-likelihood ratio - LLR).

Если H.DecisionType = 'Approximate LLR', демодулятор будет выполнять функцию демодулятора с «мягкими решениями» и вычислять аппроксимацию LLR.

Для двухмерного сигнала X For a two-dimensional signal X, функция будет воспринимать каждый

столбец, как отдельный канал.

Page 11: модуляция в примерах Матлаба

Частотная манипуляция с минимальным фазовым сдвигом Обозначение: MSK - Minimum shift keying modulation Функции MatLab: modulate method on modem.mskmod object,

demodulate method on modem.mskdemod object

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

Минимальное расстояние между частотами манипуляции, при которых посылки, соответствующие разным символам, оказываются некоррелированными, составляет:

min

min

,

12 2

T

Tff

T

πωΔ =

Δ = =

Где Tf – символьная скорость. Двухпозиционная частотная манипуляция, частоты которой подобраны

согласно уравнению называется частотная манипуляцией с минимальным фазовым сдвигом.

Page 12: модуляция в примерах Матлаба

Модуляция modulate method on modem.mskmod object H = MODEM.MSKMOD(PROPERTY1, VALUE1, ...), где

PROPERTY – свойство (параметр); VALUE – значение параметра

H = MODEM.MSKMOD(MSKDEMOD_OBJECT) Создает H объект MSK модулятора посредством чтения значения

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

H = MODEM.MSKMOD(MSKDEMOD_OBJECT, PROPERTY1, VALUE1, ...) Создает H объект MSK модулятора посредством чтения значения

параметров из объекта MSKDEMOD_OBJECT с вводом дополнительных параметров, или изменением параметров, установленных по умолчанию.

H = MODEM.MSKMOD Создает H объект MSK модулятора с параметрами, установленными по

умолчанию, этот синтаксис эквивалентен: H = MODEM.MSKMOD ('PRECODING', 'OFF', 'SAMPLESPERSYMBOL', 8,

'INPUTTYPE', 'BIT')

Page 13: модуляция в примерах Матлаба

Назначение и значение параметров для MSK модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта ('MSK Modulator'), значение не изменяемое

М Позиционность модуляции, М=2, значение не изменяемое

Precoding Определяет тип когерентного модулятора MSK: 'off' – Обычный когерентный модулятор 'on' – Предкодированный когерентный модулятор

SamplesPerSymbol Количество отсчетов на символ InputType Тип входных данных для обработки в модуляторе:

'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы) При М=2, битовые и символьные данные эквивалентны

Демодуляция demodulate method on modem.mskdemod object

H = MODEM.MSKDEMOD(PROPERTY1, VALUE1, ...) H = MODEM.MSKDEMOD(MSKMOD_OBJECT) H = MODEM.MSKDEMOD(MSKMOD_OBJECT, PROPERTY1, VALUE1, ...) H = MODEM.MSKDEMOD

Конструктор аналогичный конструктору модулятора

Page 14: модуляция в примерах Матлаба

Назначение и значение параметров для MSK демодулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта ('MSK Demodulator'), значение не изменяемое

М Позиционность модуляции, М=2, значение не изменяемое

Precoding Определяет тип когерентного демодулятора MSK:'off' – Обычный когерентный демодулятор 'on' – Предкодированный когерентный демодулятор

SamplesPerSymbol Количество отсчетов на символ OutputType Тип выходных данных для обработки в

демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы) При М=2, битовые и символьные данные эквивалентны

DecisionType Тип выходного значения (решения), вычисляемого демодулятором. Значение установлено в 'hard decision' («жесткие решения») и не изменяемое

Page 15: модуляция в примерах Матлаба

Пример clear all % Модуляция In_Data_Msk=randint(10000,1); H_MSK=modem.mskmod('Precoding','off',... 'SamplesPerSymbol',5,'InputType','Bit'); Mod_MSK=modulate(H_MSK,In_Data_Msk); % AWGN канал EbNo=7; k=log2(2); Msk_rx = awgn(Mod_MSK,EbNo+10*log10(k)-10*log10(5),'measured','dB'); % Демодуляция HD_MSK=modem.mskdemod('Precoding','off',... 'SamplesPerSymbol',5,'OutputType','Bit',... 'DecisionType','hard decision'); Demod_MSK=demodulate(HD_MSK,Msk_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_Msk(1:end-2),Demod_MSK(3:end)) % Теоретичекий BER BER_theory=berawgn(EbNo,'msk','off')

BER = 0.0014 BER_theory = 0.0015

Page 16: модуляция в примерах Матлаба

Фазовая манипуляция Обозначение: PSK - Phase shift keying modulation Функции MatLab: modulate method on modem.pskmod object,

demodulate method on modem.pskdemod object При фазовой манипуляции скачкообразно изменяется фаза несущего

колебания. На практике используется небольшое число изменений фазы, позиционность модуляции, как правило, составляет 2, 4, 8.

При реализации модуляторов и демодуляторов при позиционности свыше 2-х используются принципы квадратурной модуляции.

Модуляция modulate method on modem.pskmod object

H = MODEM.PSKMOD(M), Создает H объект PSK модулятора с M-позиционной модуляцией. H = MODEM.PSKMOD(M, PHASEOFFSET), Создает H объект PSK модулятора с M-позиционной модуляцией,

сигнальное созвездие которого имеет фазовое смешение PHASEOFFSET, заданное в радианах.

H = MODEM.PSKMOD(PROPERTY1, VALUE1, ...), H = MODEM.PSKMOD(PSKDEMOD_OBJECT), H = MODEM.PSKMOD(PSKDEMOD_OBJECT, PROPERTY1, VALUE1, ...), H = MODEM.PSKMOD, Конструктор аналогичен, описанному для MSK модулятора.

Page 17: модуляция в примерах Матлаба

По умолчанию установлены следующие значения параметров: H = MODEM.PSKMOD('M', 2, 'PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'INPUTTYPE', 'INTEGER'). Назначение и значение параметров для PSK модулятора приведены в

таблице Параметр Назначение и области значений

Type Тип объекта (' 'PSK Modulator'), значение не изменяемое

М Позиционность модуляции PhaseOffset Фазовый сдвиг идеального сигнального созвездия

в радианах Constellation Идеальное сигнальное созвездие, параметр не

изменяется, поскольку вычисляется на основе М и PhaseOffset

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

InputType Тип входных данных для обработки в модуляторе:'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

Page 18: модуляция в примерах Матлаба

Демодуляция: demodulate method on modem.pskdemod object H = MODEM.PSKDEMOD(M), H = MODEM.PSKDEMOD(M, PHASEOFFSET), H = MODEM.PSKDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.PSKDEMOD(PSKMOD_OBJECT), H = MODEM.PSKDEMOD(PSKMOD_OBJECT, PROPERTY1, VALUE1, ...), H = MODEM.PSKDEMOD Конструктор аналогичный конструктору модулятора По умолчанию установлены следующие значения параметров: H = MODEM.PSKDEMOD('M', 2, 'PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'OUTPUTTYPE', 'INTEGER', 'DECISIONTYPE', 'HARD DECISION'). Назначение и значение параметров для PSK демодулятора приведены в

таблице Параметр Назначение и области значений

Type Тип объекта (' PSK Demodulator'), значение не изменяемое

М Позиционность модуляции PhaseOffset Фазовый сдвиг идеального сигнального созвездия

в радианах Constellation Идеальное сигнальное созвездие, параметр не

изменяется, поскольку вычисляется на основе М и PhaseOffset

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение;

Page 19: модуляция в примерах Матлаба

'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

OutputType Тип выходных данных, вычисляемых демодулятором: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором: 'hard decision' – «жесткие решения» 'llr' – «мягкие решения» LLR 'approximate llr' – «мягкие решения» апрокс. LLR

NoiseVariance Дисперсия шума channel/equalized signal (сигнала после канального эквалайзера). Используется только для демодулятора с «мягкими решениями».

Page 20: модуляция в примерах Матлаба

Пример clear all % Модуляция M=8; In_Data_Psk=randint(10000,1,M); H_PSK=modem.pskmod('M',M,'PhaseOffset',0, ... 'SymbolOrder','binary','InputType','integer'); Mod_PSK=modulate(H_PSK,In_Data_Psk); % AWGN канал EbNo=11; k=log2(M); Psk_rx=awgn(Mod_PSK,EbNo+10*log10(k)-10*log10(1),'measured','dB'); % Демодуляция HD_PSK=modem.pskdemod('M',M,'PhaseOffset',0,... 'SymbolOrder','binary','OutputType','integer', ...'DecisionType','hard decision'); Demod_PSK=demodulate(HD_PSK,Psk_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_Psk,Demod_PSK) % Теоретичекий BER BER_theory=berawgn(EbNo,'psk',M,'nondiff')

BER = 6.3333e-004 BER_theory = 2.9373e-004

Page 21: модуляция в примерах Матлаба

Сигнальное созвездие модулированного сигнала: scatterplot(Mod_PSK);grid

Page 22: модуляция в примерах Матлаба

Рассеяние «зашумленного» сигнала на входе демодулятора scatterplot(Psk_rx);grid

Page 23: модуляция в примерах Матлаба

Дифферинциальная фазовая манипуляция Обозначение: DPSK - Differential phase shift keying modulation Функции MatLab: modulate method on modem.dpskmod object,

demodulate method on modem.dpskdemod object Дифферинциальная фазовая манипуляция представляет собой фазовую

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

При реализации модуляторов и демодуляторов DPSK используются принципы квадратурной модуляции.

Модуляция modulate method on modem.dpskmod object H = MODEM.DPSKMOD(PROPERTY1, VALUE1, ...), H = MODEM.DPSKMOD(DPSKDEMOD_OBJECT), H = MODEM.DPSKMOD(DPSKDEMOD_OBJECT, PROPERTY1, VALUE1, ...), H = MODEM.DPSKMOD Создает H объект DPSK модулятора Конструктор аналогичен, описанному для PSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.DPSKMOD('M', 2, 'PHASEROTATION', 0, 'SYMBOLORDER',

'BINARY', 'INPUTTYPE', 'INTEGER', 'INITIALPHASE', 0)

Page 24: модуляция в примерах Матлаба

Назначение и значение параметров для DPSK модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта ('DPSK Modulator'), значение не изменяемое

М Позиционность модуляции PhaseRotation Чередование фазы в радианах. Суммарный

фазовый сдвиг символа является суммой PhaseRotation и фазой сгенерированной за счет дифферинциальной модуляции.

Constellation Идеальное сигнальное созвездие, параметр не изменяется, поскольку вычисляется на основе М

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

InputType Тип входных данных для обработки в модуляторе:'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

InitialPhase Начальная фаза (предустановка модулятора). Используется для вычисления первого модулированного символа.

Page 25: модуляция в примерах Матлаба

Демодуляция demodulate method on modem.dpskdemod object

H = MODEM.DPSKDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.DPSKDEMOD(DPSKMOD_OBJECT), H = MODEM.DPSKDEMOD(DPSKMOD_OBJECT, PROPERTY1, VALUE1,

...), H = MODEM.DPSKDEMOD Создает H объект DPSK демодулятора Конструктор аналогичен, описанному, для DPSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.DPSKDEMOD('M', 2, 'PHASEROTATION', 0,

'SYMBOLORDER', 'BINARY', 'OUTPUTTYPE', 'INTEGER', 'INITIALPHASE', 0) Назначение и значение параметров для DPSK демодулятора приведены в

таблице Параметр Назначение и области значений

Type Тип объекта (DPSK Demodulator'), значение не изменяемое

М Позиционность модуляции PhaseRotation Чередование фазы в радианах. Суммарный

фазовый сдвиг символа является суммой PhaseRotation и фазой сгенерированной за счет дифферинциальной модуляции.

Constellation Идеальное сигнальное созвездие, параметр не изменяется, поскольку вычисляется на основе М

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея;

Page 26: модуляция в примерах Матлаба

'user-defined' – определяемое пользователем. SymbolMapping Отображение символов на точки идеального

созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

OutputType Тип выходных данных для обработки в демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором. Значение установлено в 'hard decision' («жесткие решения») и не изменяемое

InitialPhase Начальная фаза (предустановка демодулятора). Используется для вычисления первого демодулированного символа.

Пример: clear all % Модуляция M=4; In_Data_Dpsk=randint(10000,1,M); H_DPSK=modem.dpskmod('M',M,'PhaseRotation',0, ... 'SymbolOrder','gray','InputType','integer', ... 'InitialPhase',0); Mod_Dpsk=modulate(H_DPSK,In_Data_Dpsk);

Page 27: модуляция в примерах Матлаба

% AWGN канал EbNo=11; k=log2(M); Dpsk_rx=awgn(Mod_Dpsk,EbNo+10*log10(k)-10*log10(1),'measured','dB'); % Демодуляция HD_DPSK=modem.dpskdemod('M',M,'PhaseRotation',0, ... 'SymbolOrder','gray','OutputType','integer', ... 'InitialPhase',0); Demod_DPSK=demodulate(HD_DPSK,Dpsk_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_Dpsk,Demod_DPSK) % Теоретичекий BER BER_theory=berawgn(EbNo,'dpsk',M) BER = 5.0000e-005 BER_theory = 6.7893e-005

Page 28: модуляция в примерах Матлаба

Фазовая квадратурная манипуляция со сдвигом Обозначение: OQPSK - Offset quadrature phase shift keying modulation Функции MatLab: modulate method on modem.oqpskmod object,

demodulate method on modem.oqpskdemod object OQPSK – четырехпозиционная квадратурная манипуляция, в которой

осуществляется начальный сдвиг созвездия. На практике наиболее часто применяются следующие виды модуляции: QPSK, DQPSK π/4- QPSK.

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

Модуляция modulate method on modem.oqpskmod object H = MODEM.OQPSKMOD(PROPERTY1, VALUE1, ...), H = MODEM.OQPSKMOD(OQPSKDEMOD_OBJECT), H = MODEM.OQPSKMOD(OQPSKDEMOD_OBJECT, PROPERTY1,

VALUE1, ...), H = MODEM.OQPSKMOD Создает H объект OQPSK модулятора Конструктор аналогичен, описанному для PSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.OQPSKMOD('PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'INPUTTYPE', 'INTEGER')

Page 29: модуляция в примерах Матлаба

Назначение и значение параметров для OQPSK модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта ('OQPSK Modulator'), значение не изменяемое

М Позиционность модуляции, константа равная 4, значение не изменяемое

PhaseOffset Фазовый сдвиг идеального сигнального созвездия в радианах

Constellation Идеальное сигнальное созвездие, параметр не изменяется, и автоматически вычисляется на основе М и PhaseOffset

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

InputType Тип входных данных для обработки в модуляторе:'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

Page 30: модуляция в примерах Матлаба

Демодуляция demodulate method on modem.oqpskdemod object

H = MODEM.OQPSKDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.OQPSKDEMOD(OQPSKMOD_OBJECT), H = MODEM.OQPSKDEMOD(OQPSKMOD_OBJECT, PROPERTY1,

VALUE1, ...), H = MODEM.OQPSKDEMOD Создает H объект OQPSK модулятора Конструктор аналогичен, описанному для OQPSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.OQPSKDEMOD('PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'OUTPUTTYPE', 'INTEGER', 'DECISIONTYPE', 'HARD DECISION') Назначение и значение параметров для OQPSK демодулятора приведены в

таблице

Параметр Назначение и области значений Type Тип объекта ('OQPSK Demodulator'), значение не

изменяемое М Позиционность модуляции, константа равная 4,

значение не изменяемое PhaseOffset Фазовый сдвиг идеального сигнального созвездия

в радианах Constellation Идеальное сигнальное созвездие, параметр не

изменяется, и автоматически вычисляется на основе М и PhaseOffset

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального

Page 31: модуляция в примерах Матлаба

созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

OutputType Тип выходных данных для обработки в демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором: 'hard decision' – «жесткие решения» 'llr' – «мягкие решения» LLR 'approximate llr' – «мягкие решения» апрокс. LLR

NoiseVariance Дисперсия шума для принятого сигнала. Используется только для демодулятора с «мягкими решениями».

Page 32: модуляция в примерах Матлаба

Пример: clear all % Модуляция M=4; In_Data_Oqpsk=randint(100000,1); H_OQPSK=modem.oqpskmod('M',M,'PhaseOffset',pi/4,... 'SymbolOrder','gray','InputType','bit'); Mod_Oqpsk=modulate(H_OQPSK,In_Data_Oqpsk); % AWGN канал EbNo=3; k=log2(M); Oqpsk_rx=awgn(Mod_Oqpsk,EbNo+10*log10(k)-10*log10(2),'measured','dB'); % Демодуляция HD_OQPSK=modem.oqpskdemod('M',M,'PhaseOffset',pi/4,... 'SymbolOrder','gray','OutputType','bit', ... 'DecisionType','hard decision'); Demod_OQPSK=demodulate(HD_OQPSK,Oqpsk_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_Oqpsk(1:end-2),Demod_OQPSK(3:end)) % Теоретичекий BER BER_theory=berawgn(EbNo,'oqpsk','nondiff') BER = 0.0233 BER_theory = 0.0229

Page 33: модуляция в примерах Матлаба

Квадратурная амплитудная модуляция Обозначение: QAM - Quadrature amplitude modulation Функции MatLab: modulate method on modem.qammod object,

demodulate method on modem.qamdemod object Квадратурная амплитудная модуляция – это модуляция, когда

одновременно изменяется и фаза, и амплитуда модулирующего сигнала. Позиционность модуляции 4 и выше (существуют решения QAM-1024).

Модуляция modulate method on modem.qammod object H = MODEM.QAMMOD(M), H = MODEM.QAMMOD(M, PHASEOFFSET), H = MODEM.QAMMOD(PROPERTY1, VALUE1, ...), H = MODEM.QAMMOD(QAMDEMOD_OBJECT), H = MODEM.QAMMOD(QAMDEMOD_OBJECT, PROPERTY1, VALUE1,

...), H = MODEM.QAMMOD Создает H объект QAM модулятора Конструктор аналогичен, описанному для PSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.QAMMOD ('M', 16, 'PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'INPUTTYPE', 'INTEGER')

Page 34: модуляция в примерах Матлаба

Назначение и значение параметров для QAM модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта (' QAM Modulator'), значение не изменяемое

М Позиционность модуляции PhaseOffset Фазовый сдвиг идеального сигнального созвездия

в радианах Constellation Идеальное сигнальное созвездие, параметр не

изменяется, и автоматически вычисляется на основе М и PhaseOffset

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

InputType Тип входных данных для обработки в модуляторе:'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

Page 35: модуляция в примерах Матлаба

Демодуляция demodulate method on modem.qamdemod object H = MODEM.QAMDEMOD(M), H = MODEM.QAMDEMOD(M, PHASEOFFSET), H = MODEM.QAMDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.QAMDEMOD(QAMMOD_OBJECT), H = MODEM.QAMDEMOD(QAMMOD_OBJECT, PROPERTY1, VALUE1,

...), H = MODEM.QAMDEMOD Создает H объект QAM демодулятора Конструктор аналогичен, описанному для QAM модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.QAMDEMOD('M', 16, 'PHASEOFFSET', 0, 'SYMBOLORDER',

'BINARY', 'OUTPUTTYPE', 'INTEGER', 'DECISIONTYPE', 'HARD DECISION') Назначение и значение параметров для QAM демодулятора приведены в

таблице

Параметр Назначение и области значений Type Тип объекта (' QAM Demodulator'), значение не

изменяемое М Позиционность модуляции

PhaseOffset Фазовый сдвиг идеального сигнального созвездия в радианах

Constellation Идеальное сигнальное созвездие, параметр не изменяется, и автоматически вычисляется на основе М и PhaseOffset

Page 36: модуляция в примерах Матлаба

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

OutputType Тип входных данных для обработки в демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором: 'hard decision' – «жесткие решения» 'llr' – «мягкие решения» LLR 'approximate llr' – «мягкие решения» апрокс. LLR

NoiseVariance Дисперсия шума channel/equalized signal (сигнала после канального еквалайзера). Используется только для демодулятора с «мягкими решениями».

Page 37: модуляция в примерах Матлаба

Пример: clear all % Модуляция M=64; In_Data_QAM=randint(10000,1,М); H_QAM=modem.qammod('M',M,'PhaseOffset',0, ... 'SymbolOrder','gray','InputType','integer'); Mod_qam=modulate(H_QAM,In_Data_QAM); % AWGN канал EbNo=16; k=log2(M); Qam_rx=awgn(Mod_qam,EbNo+10*log10(k),'measured','dB'); % Демодуляция HD_QAM=modem.qamdemod('M',M,'PhaseOffset',0, ...'SymbolOrder','gray','OutputType','integer',... 'DecisionType','hard decision'); Demod_QAM=demodulate(HD_QAM,Qam_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_QAM,Demod_QAM) % Теоретичекий BER BER_theory=berawgn(EbNo,'qam',M) BER = 2.1667e-004 BER_theory = 2.1717e-004

Page 38: модуляция в примерах Матлаба

scatterplot(Mod_qam,M);grid

Page 39: модуляция в примерах Матлаба

scatterplot(Qam_rx,M);grid

Page 40: модуляция в примерах Матлаба

Квадратурная амплитудная модуляция (общий) Обозначение: General QAM - General Quadrature amplitude modulation Функции MatLab: modulate method on modem.genqammod object,

demodulate method on modem.genqamdemod object Отличие от QAM модулятора состоит в том, что позволяет создавать

произвольные сигнальные созвездия. Модуляция modulate method on modem.genqammod object

H = MODEM.GENQAMMOD(PROPERTY1, VALUE1, ...), H = MODEM.GENQAMMOD(GENQAMDEMOD_OBJECT), H = MODEM.GENQAMMOD(GENQAMDEMOD_OBJECT, PROPERTY1,

VALUE1, ...), H = MODEM.GENQAMMOD Создает H объект QAM модулятора Конструктор аналогичен, описанному для PSK модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.GENQAMMOD('Constellation', [-3+j*3, -3+j*1, -3-j*1, -3-j*3, -

1+j*3, -1+j*1, -1-j*1, -1-j*3, 1+j*3, 1+j*1, 1-j*1, 1-j*3, 3+j*3, 3+j*1, 3-j*1, 3-j*3], 'INPUTTYPE', 'INTEGER')

Page 41: модуляция в примерах Матлаба

Назначение и значение параметров для QAM модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта (' General QAM Modulator'), значение не изменяемое

М Позиционность модуляции, значение не изменяемое и вычисляется по заданному сигнальному созвездию (Constellation)

Constellation Сигнальное созвездие. InputType Тип входных данных для обработки в модуляторе:

'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

Демодуляция demodulate method on modem.genqamdemod object

H = MODEM.GENQAMDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.GENQAMDEMOD(GENQAMMOD_OBJECT), H = MODEM.GENQAMDEMOD (GENQAMMOD_OBJECT, PROPERTY1,

VALUE1, ...), H = MODEM.GENQAMDEMOD Создает H объект QAM демодулятора Конструктор аналогичен, описанному для QAM модулятора. По умолчанию установлены следующие значения параметров: H = MODEM.GENQAMDEMOD('Constellation', [-3+j*3, -3+j*1, -3-j*1, -3-j*3,

-1+j*3, -1+j*1, -1-j*1, -1-j*3, 1+j*3, 1+j*1, 1-j*1, 1-j*3, 3+j*3, 3+j*1, 3-j*1, 3-j*3], 'OUTPUTTYPE', 'INTEGER','DECISIONTYPE', 'HARD DECISION')

Page 42: модуляция в примерах Матлаба

Назначение и значение параметров для QAM демодулятора приведены в

таблице

Параметр Назначение и области значений Type Тип объекта (' General QAM Demodulator'),

значение не изменяемое М Позиционность модуляции, значение не

изменяемое и вычисляется по заданному сигнальному созвездию (Constellation)

Constellation Сигнальное созвездие. OutputType Тип входных данных для обработки в

демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором: 'hard decision' – «жесткие решения» 'llr' – «мягкие решения» LLR 'approximate llr' – «мягкие решения» апрокс. LLR

NoiseVariance Дисперсия шума принятого сигнала. Используется только для демодулятора с «мягкими решениями».

Page 43: модуляция в примерах Матлаба

Пример созвездия из HELP Матлаб

Page 44: модуляция в примерах Матлаба

Импульсная амплитудная модуляция Обозначение: PAM - Pulse amplitude modulation Функции MatLab: modulate method on modem.pammod object,

demodulate method on modem.pamdemod object

Русские аналоги названия: амплитудно-фазовая модуляция, амплитудно-импульсная модуляция АИМ. Применяется в различных вариациях при передаче данных по проводным каналам связи ( технология xDSL ) Модуляция modulate method on modem.pammod object

H = MODEM.PAMMOD(PROPERTY1, VALUE1, ...), H = MODEM.PAMMOD(PAMDEMOD_OBJECT), H = MODEM.PAMMOD(PAMDEMOD_OBJECT, PROPERTY1, VALUE1,

...), H = MODEM.PAMMOD Создает H объект РAM модулятора Конструктор аналогичен, описанному для других типов модуляторов. По умолчанию установлены следующие значения параметров: H = MODEM.PAMMOD('M', 2, 'SYMBOLORDER', 'BINARY', 'INPUTTYPE',

'INTEGER')

Page 45: модуляция в примерах Матлаба

Назначение и значение параметров для QAM модулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта (' PAM Modulator'), значение не изменяемое

М Позиционность модуляции Constellation Идеальное сигнальное созвездие, параметр не

изменяется, и автоматически вычисляется на основе М

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея; 'user-defined' – определяемое пользователем.

SymbolMapping Отображение символов на точки идеального созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

InputType Тип входных данных для обработки в модуляторе:'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

Page 46: модуляция в примерах Матлаба

Демодуляция demodulate method on modem.pamdemod object

H = MODEM.PAMDEMOD(PROPERTY1, VALUE1, ...), H = MODEM.PAMDEMOD(PAMMOD_OBJECT), H = MODEM.PAMDEMOD(PAMMOD_OBJECT, PROPERTY1, VALUE1,

...), H = MODEM.PAMDEMOD Создает H объект РAM модулятора Конструктор аналогичен, описанному для других типов демодуляторов. По умолчанию установлены следующие значения параметров:

H = MODEM.PAMDEMOD('M', 2, 'SYMBOLORDER', 'BINARY',

'OUTPUTTYPE', 'INTEGER', 'DECISIONTYPE', 'HARD DECISION')

Назначение и значение параметров для PAM демодулятора приведены в таблице

Параметр Назначение и области значений

Type Тип объекта (' PAM Demodulator'), значение не изменяемое

М Позиционность модуляции Constellation Идеальное сигнальное созвездие, параметр не

изменяется, и автоматически вычисляется на основе М

SymbolOrder Тип отображения (mapping), используемого для отображения символов на точки идеального созвездия: 'binary' – бинарное отображение; 'gray' – отображение в соответствии с кодом Грея;

Page 47: модуляция в примерах Матлаба

'user-defined' – определяемое пользователем. SymbolMapping Отображение символов на точки идеального

созвездия как списка целых чисел от 0 до M-1. Этот параметр только устанавливаемый, если используется 'user-defined' SymbolOrder, в противном случае он вычисляется автоматически.

OutputType Тип входных данных для обработки в демодуляторе: 'bit' – бинарные данные (биты) 'integer' – целочисленные данные (символы)

DecisionType Тип выходного значения (решения), вычисляемого демодулятором: 'hard decision' – «жесткие решения» 'llr' – «мягкие решения» LLR 'approximate llr' – «мягкие решения» апрокс. LLR

NoiseVariance Дисперсия шума channel/equalized signal (сигнала после канального еквалайзера). Используется только для демодулятора с «мягкими решениями».

Page 48: модуляция в примерах Матлаба

Пример: clear all % Модуляция M=16; In_Data_PAM=randint(10000,1,M); H_PAM=modem.pammod('M',M,'SymbolOrder','gray', ... 'InputType','integer'); Mod_pam=modulate(H_PAM,In_Data_PAM); % AWGN канал EbNo=20; k=log2(M); Pam_rx=awgn(Mod_pam,EbNo+10*log10(k),'measured','dB'); % Демодуляция HD_PAM=modem.pamdemod('M',M,'SymbolOrder', 'gray','OutputType','integer','DecisionType', ... 'hard decision'); Demod_PAM=demodulate(HD_PAM,Pam_rx); % Подсчет количества ошибок [num,BER]=biterr(In_Data_PAM,Demod_PAM) % Теоретичекий BER BER_theory=berawgn(EbNo,'pam',M) BER = 4.7500e-004 BER_theory = 5.0531e-004

Page 49: модуляция в примерах Матлаба

scatterplot(Mod_pam,M);grid

Page 50: модуляция в примерах Матлаба

scatterplot(Pam_rx,M);grid

Page 51: модуляция в примерах Матлаба

ПОЛЕЗНЫЕ ПРИЛОЖЕНИЯ

Графический интерфейс для анализа коеффициента ошибок: BERTool

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

Вызов из командной строки, или скрипт-файла: bertool Пример:

Page 52: модуляция в примерах Матлаба

Построение глаз-диаграммы: EyeScope Вызов из командной строки, или скрипт-файла: eyescope

Подробности работы с глаз диаграммой и измерений с ее помошью приведены в

Help\Demos\Toolboxes\ Communications\ Analysis and Visualization\ Eye Diagram and Scatter Plot

и …\ Eye Diagram Measurements Функция подсчета коеффициента ошибок Простейшее представление

[NUMBER,RATIO] = BITERR(X,Y), где NUMBER – количество ошибок; RATIO – коэффициент ошибок (BER); X,Y – сравниваемые последовательности.

Page 53: модуляция в примерах Матлаба

Функция теоретического расчета коеффициента ошибок (AWGN) для разных видов модуляции Формулы, по которым ведется расчет можно найти в Help/ Analytical Expressions Used in berawgn

[BER,SER] = berawgn(EbNo, ...), где

BER – коэффициент ошибок (Bit Error Rate); SER – символьный коэффициент ошибок (Symbol Error Rate); EbNo – отношение сигнал/шум. Варианты использования функции для разных видов модуляции ber = berawgn(EbNo,'pam',M); ber = berawgn(EbNo,'qam',M); ber = berawgn(EbNo,'psk',M,dataenc); ber = berawgn(EbNo,'oqpsk',dataenc); ber = berawgn(EbNo,'dpsk',M); ber = berawgn(EbNo,'fsk',M,coherence); ber = berawgn(EbNo,'fsk',2,coherence,rho); ber = berawgn(EbNo,'msk',dataenc); ber = berawgn(EbNo,'msk',dataenc,coherence); berlb = berawgn(EbNo,'cpfsk',M,modindex,kmin) ; Дополнительные фукции расчета коеффициента ошибок

Функция теоретического расчета коэффициента ошибок (AWGN) для разных видов помехоустойчивых кодов – bercoding

Функция теоретического расчета коэффициента ошибок каналов с Релеевскими и Райсовскими замираниями – berfading

Функция теоретического расчета коэффициента ошибок, возникающих в результате неточной синхронизации – bersync

Page 54: модуляция в примерах Матлаба

Функция отображения сигнального созвездия (диаграмма рассеяния)

SCATTERPLOT(X) Отображает рассеяние для вектора X, X может быть вещественным и

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

SCATTERPLOT(X, N), N – фактор децимации (прореживания) SCATTERPLOT(X, N, OFFSET), OFFSET – число отсчетов, пропущенных в начале X перед отображением. SCATTERPLOT(X, N, OFFSET, PLOTSTRING), PLOTSTRING – параметры отображаемой точки, линии H = SCATTERPLOT(...) Генерирует отображение и сохраняет результат в H.

Page 55: модуляция в примерах Матлаба

Код Грея

Код Грея – это система нумерования, когда два последних значения отличаются не более, чем в одном разряде (не путать с изменением на 1). Существует бесконечное множество кодов Грея для систем исчисления с любым основанием. На практике наиболее часто применяется рефлексивный бинарный код Грея. Кодирование кодом Грея позволяет улучшить помехоустойчивость системы и оптимизировать спектральные характеристики сигнала.

Y = BIN2GRAY(X,MODULATION,M), Выполняет преобразование входных данных X в код Грея, в соответствии с

выбранным типом модуляции MODULATION ('qam', 'pam', 'fsk', 'dpsk' or 'psk') позиционности M.

[Y,MAP] = BIN2GRAY(X,MODULATION,M), Возвращает сигнальное созвездие MAP кода Грея.

Y = GRAY2BIN(X,MODULATION,M), [Y,MAP] = GRAY2BIN(X,MODULATION,M) Функция, обратного преобразования кодированной кодом Грея

последовательности в бинарный код.