(Удаленный) Восстанавливают фазу поставщика услуг основополосного сигнала 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. Свойства объектов соответствуют параметрам блоков.