exponenta event banner

mskdemod

Демодуляция с минимальной манипуляцией сдвигом

Синтаксис

z = mskdemod(y,nsamp)
z = mskdemod(y,nsamp,dataenc)
z = mskdemod(y,nsamp,dataenc,ini_phase)
z = mskdemod(y,nsamp,dataenc,ini_phase,ini_state)
[z,phaseout] = mskdemod(...)
[z,phaseout,stateout] = mskdemod(...)

Описание

z = mskdemod(y,nsamp) демодулирует комплексную огибающую y сигнала с использованием дифференциально кодированного способа минимальной манипуляции сдвигом (MSK). nsamp обозначает число выборок на символ и должно быть положительным целым числом. Начальная фаза демодулятора равна 0. Если y является матрицей с несколькими строками и столбцами, функция рассматривает столбцы как независимые каналы и обрабатывает их независимо.

z = mskdemod(y,nsamp,dataenc) задает метод кодирования данных для MSK. dataenc может быть либо 'diff' для дифференциально кодированных MSK или 'nondiff' для недифференцированно кодированного MSK.

z = mskdemod(y,nsamp,dataenc,ini_phase) определяет начальную фазу демодулятора. ini_phase - вектор строки, длина которого представляет собой число каналов в y и значения которых являются целыми кратными pi/2. Чтобы избежать переопределения значения по умолчанию dataenc, комплект dataenc кому [].

z = mskdemod(y,nsamp,dataenc,ini_phase,ini_state) определяет начальное состояние демодулятора. ini_state содержит последнюю половину символа ранее принятого сигнала. ini_state является nsamp- по-C матрице, где C - количество каналов в y.

[z,phaseout] = mskdemod(...) возвращает заключительную фазу y, что важно для демодуляции будущего сигнала. Продукция phaseout имеет те же размеры, что и ini_phase и принимает значения 0, pi/2, pi, и 3*pi/2.

[z,phaseout,stateout] = mskdemod(...) возвращает окончательный nsamp значения y, что полезно для демодуляции первого символа будущего сигнала. stateout имеет те же размеры, что и ini_state вход.

Примеры

свернуть все

Модулировать и демодулировать шумный MSK-сигнал. Отображение количества полученных ошибок.

Определите количество выборок на символ для MSK-сигнала.

nsamp = 16;

Инициализируйте параметры моделирования.

numerrs = 0; 
modPhase = zeros(1,2);    
demodPhase = zeros(1,2);  
demodState = complex(zeros(nsamp,2));

Основной цикл обработки включает в себя следующие шаги:

  • Создание двоичных данных.

  • MSK модулирует данные.

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

  • Демодулируйте сигнал MSK.

  • Определите количество битовых ошибок.

for iRuns = 1:20
    txData = randi([0 1],100,2);
    [modSig,modPhase] = mskmod(txData,nsamp,[],modPhase);
    rxSig = awgn(modSig,20,'measured');
    [rxData,demodPhase,demodState] = mskdemod(rxSig,nsamp,[],demodPhase,demodState);
    numerrs = numerrs + biterr(txData,rxData);
end

Отображение количества битовых ошибок.

numerrs
numerrs = 0

Ссылки

[1] Пасупатия, Суббараян, «Минимальная манипуляция сдвигами: спектрально эффективная модуляция», журнал IEEE Communications Magazine, июль 1979, стр. 14-22.

Представлен до R2006a