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-by-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] Pasupathy, Subbarayan, “Минимальное Манипулирование Сдвига: Спектрально Эффективная Модуляция”, Коммуникационный Журнал IEEE, июль 1979, стр 14–22.

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