(Удаленный) Восстанавливают фазу поставщика услуг основополосного сигнала CPM
comm.CPMCarrierPhaseSynchronizer был удален. Используйте comm.CarrierSynchronizer вместо этого.
CPMCarrierPhaseSynchronizer объект восстанавливает фазу поставщика услуг входного сигнала с помощью метода 2P-степени. Этот метод feedforward является часами, которым помогают, но не данные, которым помогают. Метод подходит для систем, которые используют определенные типы полосовой модуляции. Эти типы включают: непрерывная фазовая модуляция (CPM), минимальное манипулирование сдвига (MSK), непрерывное манипулирование сдвига частоты фазы (CPFSK) и Гауссово минимальное манипулирование сдвига (GMSK).
Восстановить фазу поставщика услуг входного сигнала:
Задайте и настройте свой объект синхронизатора фазы поставщика услуг CPM. Смотрите Конструкцию.
Вызовите step восстановить фазу поставщика услуг входного сигнала с помощью метода 2P-степени согласно свойствам comm.CPMCarrierPhaseSynchronizer. Поведение step характерно для каждого объекта в тулбоксе.
Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.
H = comm.CPMCarrierPhaseSynchronizer создает Системный объект синхронизатора фазы поставщика услуг CPM, H. Этот объект восстанавливает фазу поставщика услуг основополосной непрерывной фазовой модуляции (CPM), минимального манипулирования сдвига (MSK), непрерывного манипулирования сдвига частоты фазы (CPFSK) или Гауссова минимального манипулирования сдвига (GMSK) модулируемый сигнал с помощью метода 2P-степени.
H = comm.CPMCarrierPhaseSynchronizer( создает объект синхронизатора фазы поставщика услуг CPM, Name,Value)H Этот объект каждый задал набор свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).
H = comm.CPMCarrierPhaseSynchronizer(HALFPOW, создает объект синхронизатора фазы поставщика услуг CPM, Name,Value)H. Этот объект имеет P набор свойств к HALFPOW, и другой заданный набор свойств к заданным значениям.
|
Знаменатель индекса модуляции CPM Задайте знаменатель индекса модуляции CPM входного сигнала как действительное значение положительного скалярного целого числа типа данных, одного или двойного. Значением по умолчанию является |
|
Количество символов, где фаза поставщика услуг принятая константа Задайте интервал наблюдения как действительное значение положительного скалярного целого числа типа данных, одного или двойного. Значением по умолчанию является |
| сброс | Сбросьте состояния объекта синхронизатора фазы поставщика услуг CPM |
| шаг | (Удаленный) Восстанавливают фазу поставщика услуг основополосного сигнала CPM |
| Характерный для всех системных объектов | |
|---|---|
release | Позвольте изменения значения свойства Системного объекта |
Восстановите фазу поставщика услуг сигнала GMSK.
% Initialize random seed for repeatability rng(123) % Create a GMSK modulator, an AWGN channel, and a GMSK demodulator. % Use a phase offset of pi/4. samplesPerSymbol = 4; modulator = comm.GMSKModulator('BitInput',true,'InitialPhaseOffset',pi/4, ... 'SamplesPerSymbol',samplesPerSymbol); awgnChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)', ... 'SNR',40); demodulator = comm.GMSKDemodulator('BitOutput',true, ... 'InitialPhaseOffset',pi/4,'SamplesPerSymbol',samplesPerSymbol); % Create a System object for frequency offset frequencyOffset = 1e4; sampleRate = 1e6; pfo = comm.PhaseFrequencyOffset('FrequencyOffset',frequencyOffset, ... 'SampleRate',sampleRate); % Create a carrier synchronizer carrierSync = comm.CarrierSynchronizer('SamplesPerSymbol', samplesPerSymbol, ... 'Modulation','OQPSK'); % Create a preamble for resolving phase ambiguity preambleLength = 13; barker = comm.BarkerCode('Length',preambleLength,'SamplesPerFrame', ... preambleLength); % For preamble preamble = (1+barker())/2; % Length 13, unipolar % Create an error rate calculator, account for the delay caused by % the Viterbi algorithm used by the GMSK demodulator. errorCalculator = comm.ErrorRate('ReceiveDelay',demodulator.TracebackDepth); numFrames = 4000; symbolsPerFrame = 300; estimatedPhaseOffset = zeros(symbolsPerFrame*samplesPerSymbol,numFrames); errorHistory = zeros(numFrames,1); for counter = 1:numFrames % Transmit 300 bits payload = randi([0 1],symbolsPerFrame - preambleLength,1); data = [preamble; payload]; modulatedSignal = modulator(data); noisySignal = awgnChannel(modulatedSignal); rxSignal = pfo(noisySignal); % with carrier frequency offset [syncSignal, phOffset] = carrierSync(rxSignal); estimatedPhaseOffset(:, counter) = phOffset; phaseCorrection = round((2/pi)*angle(... modulatedSignal(1:preambleLength*samplesPerSymbol).* ... conj(syncSignal(1:preambleLength*samplesPerSymbol)))); phaseCorrection(phaseCorrection==-2)=2; phaseCorrection = mode(phaseCorrection)*pi/2; receivedData = demodulator(exp(1j*phaseCorrection)*syncSignal); errorStats = errorCalculator(data,receivedData); errorHistory(counter) = errorStats(2); end estimatedFreqOffset = estimatedPhaseOffset(:); % plot((estimatedFreqOffset(2:end)-estimatedFreqOffset(1:end-1))*sampleRate/(2*pi)) % xlabel('Sample') % ylabel('Estimated Frequency Offset (Hz)'); % Number of bit errors (ignoring those in the first half of the simulation, % before frequency and phase offset are corrected) numErrors = errorHistory(end) - errorHistory(0.5*end)
numErrors =
0Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока CPM Phase Recovery. Свойства объектов соответствуют параметрам блоков.