В этом примере показано, как использовать cyclostationary выявление признаков, чтобы отличить сигналы с различными схемами модуляции, включая сигналы P25 [1]. Это задает четыре случая сигналов: шум только, C4FM, CQPSK и один произвольный тип. Пример применяет алгоритм обнаружения для сигналов с различными значениями ОСШ, и для полученного реального сигнала P25, и затем классифицирует сигналы как один из четырех типов. Графические результаты показывают, что алгоритм обнаружения преуспевает во всех случаях.
Проект 25 (P25 или APCO-25) является набором стандартов для коммуникаций цифрового радио для использования федеральным, состоянием, областью и локальными службами общественной безопасности в Северной Америке. Когда чрезвычайные ситуации возникают, этот набор протоколов включает коммуникацию среди правительственных учреждений и взаимных команд реагирования помощи. В этом отношении P25 исполняет ту же роль как европейское Наземное Соединенное магистралью Радио (TETRA) [2] протокол, несмотря на то, что эти два стандарта не совместимы друг с другом. В Северной Америке P25 широко используется в общественной безопасности, безопасности, государственной службе и коммерческом применении [1].
Проект 25 развертывается в двух фазах. В Фазе 1, P25 использует C4FM, акроним для совместимых 4 частотных модуляций уровня. В его самой простой форме это - специальный тип 4FSK модуляция, которая использует четыре различных частоты, чтобы представлять символы. Фаза 1 использует эту схему модуляции передать цифровую информацию более чем канал на 12,5 кГц.
Фаза 2 передает цифровую информацию более чем канал на 6,25 кГц с помощью формата модуляции совместимого квадратурного манипулирования сдвига фазы (CQPSK). Модуляция CQPSK является по существу квадратурным манипулированием сдвига фазы дифференциала пи/4 (пи/4 DQPSK), где кодирование симметрично, с помощью значений фазового перехода-135 градусов,-45 градусов, +45 градусов и +135 градусов, как показано в следующем рисунке.
В этом рисунке следующее состояние красных точек может только быть зелеными точками, и наоборот. Несмотря на то, что скорость передачи данных и биты на символ идентичны, основное различие между двумя схемами модуляции - то, что C4FM использует сдвиг частоты, чтобы изобразить символ, который обеспечивает фиксированный амплитудный сигнал. В отличие от этого CQPSK, использует сдвиг фазы, чтобы изобразить символ, который передает амплитудный компонент сигналу.
Распознавание модуляции и классификация сигнала были предметом значительного исследования больше двух десятилетий. Системы классификации могут обычно разделяться на одну из двух широких категорий: подходы основанного на вероятности (LB) и подходы основанного на функции (FB) [3]. Выявление признаков Cyclostationary является методом FB на основе того, что коммуникационные сигналы точно не описаны столь же стационарные, а скорее более соответственно смоделированы как cyclostationary [4].
cyclostationary процесс является сигналом, имеющим статистические свойства, которые варьируются циклически со временем [5]. Эти периодичности происходят для сигналов четко определенными способами из-за процессов, таких как выборка, сканирование, модуляция, мультиплексирование и кодирование. Эта получившаяся периодическая природа сигналов может быть использована, чтобы определить схему модуляции неизвестного сигнала [4].
Выявление признаков Cyclostationary является устойчивым методом обнаружения спектра, потому что модулируемой информацией является cyclostationary процесс, в то время как шум не. В результате циклические детекторы могут успешно действовать даже в низких средах ОСШ.
Для случая только для шума сгенерируйте (4*N)-by-1 вектор из белого Гауссова шума со степенью 1 dBW. 1 / (4*N) циклическое разрешение, используемое, чтобы вычислить спектральную автокорреляционную функцию (SAF) в commP25ssca.m.
N = 4096; input = wgn(4*N,1,1);
Используйте область времени спектральная автокорреляционная функция, чтобы анализировать cyclostationary функции сигнала x (t). Запустите спектральную автокорреляционную функцию commP25ssca.m на входном сигнале. Эта функция оценивает идеальную спектральную автокорреляционную функцию с помощью алгоритма корреляции спектра полосы (SSCA) [3] временный метод сглаживания. Это - основанный на БПФ алгоритм сглаживания времени. Обратитесь к [6] для получения дополнительной информации о реализации этого алгоритма.
Запустите функцию построения графика commP25plot.m. Этот шаг иллюстрирует спектральную автокорреляционную функцию, которая является 3D фигурой. Его ось X представляет циклическую частоту (альфа) от-1 до 1. Его ось Y представляет спектральную частоту (f) от-0.5 до 0,5, и его ось z (Sx) представляет соответствующую величину спектральной автокорреляционной функции для каждого (альфа, f) пара. Циклическое разрешение dalpha = 1/T, где T является временем наблюдения данных. Спектральное разрешение df = 1/ТВт, где Tw является временем окна, чтобы вычислить комплекс, демодулирует [7]. С тех пор T> Tw, dalpha <df. Обратите внимание на то, что, когда альфа не равняется нулю, значения SAF являются приблизительно нулем.
% 64 represents the window time Tw, 4*N represents the observation time T [Sx,alphao,fo] = commP25ssca(input,1,1/64,1/(4*N)); fig1 = figure('Position',figposition([5 40 40 40])); commP25plot(Sx,alphao,fo);
commP25decision_noise.m определяет, содержит ли входной сигнал только шум. commP25decision_c4fm.m определяет, является ли входной сигнал сигналом C4FM. И commP25decision_cqpsk.m определяет, является ли входной сигнал сигналом CQPSK. Эти решения основаны на местоположении peaks в SAF. В этом примере код правильно приходит к заключению, что существует существующий сигнал № P25.
[c,d] = size(Sx); [Ades,Index] = sort(Sx(:),'descend'); % sort Sx by its element and store in Ades [Ridx,Cidx] = ind2sub(size(Sx),Index); % corresponding row index and column index leng = length(Ades); noise_decision = commP25decision_noise(Ades,Ridx,Cidx,leng,c,d); if noise_decision == 0 c4fm_decision = commP25decision_c4fm(Ades,Ridx,leng,c); if c4fm_decision == 0 commP25decision_cqpsk(Ades,Ridx,Cidx,leng,c,d); end end
There is no P25 signal.
Согласно [8], следующая структура модуляции генерирует выходной сигнал C4FM.
Нормальный фильтр приподнятого косинуса, который удовлетворяет импульсу Найквиста формирование критерия, минимизирует интерференцию межсимвола. Параметры фильтра приподнятого косинуса выбраны на технические требования фильтра в [8]. А именно, этот фильтр приподнятого косинуса имеет фактор повышающей дискретизации 4 и фактор спада 0,2. Стандарт C4FM также призывает к инверсии sinc фильтр после того, как фильтр приподнятого косинуса, чтобы компенсировать sinc ответ приемника P25 интегрируют и выведут фильтр. Модулятор FM имеет отклонение 600 Гц.
Чтобы наблюдать эффекты шума на проектных решениях, запустите обнаружение в значениях С/Ш -3 дБ, 3 дБ и дБ бесконечности.
% The length of input bits is N. The length of the output bits must also be % N x = randi([0,3],N,1); sym = 2*x-3; % integer input % Raised Cosine Filter sampsPerSym = 4; % Upsampling factor % Design raised cosine filter with given order in symbols. Apply gain to % the unit energy filter to obtain max amplitude of 1. rctFilt = comm.RaisedCosineTransmitFilter(... 'Shape', 'Normal', ... 'RolloffFactor', 0.2, ... 'OutputSamplesPerSymbol', sampsPerSym, ... 'FilterSpanInSymbols', 60, ... 'Gain', 1.9493); c4fm_init = rctFilt(sym); shape2 = 'Inverse-sinc Lowpass'; d2 = fdesign.interpolator(2, shape2); intrpltr = design(d2, 'SystemObject', true); c4fm_init = intrpltr(c4fm_init); % Baseband Frequency Modulator Fs = 4800; freqdev = 600; int_x = cumsum(c4fm_init)/Fs; c4fm_output = exp(1i*2*pi*freqdev*int_x); y = c4fm_output(1:N); % Ideal case, SNR = infinity y1 = awgn(y,3); % SNR = 3 dB y2 = awgn(y,-3); % SNR = -3 dB
Соответствующие спектральные автокорреляционные функции вычислены и построены. Обратите внимание на то, что peaks SAF становится более неясным, когда отношение сигнал/шум уменьшается.
[Sx0,alphao0,fo0] = commP25ssca(y,1,1/64,1/(4*N)); [Sx1,alphao1,fo1] = commP25ssca(y1,1,1/64,1/(4*N)); [Sx2,alphao2,fo2] = commP25ssca(y2,1,1/64,1/(4*N)); fig2 = figure('Position',figposition([5 40 80 40])); subplot(131); commP25plot(Sx0,alphao0,fo0); title('Ideal case'); subplot(132); commP25plot(Sx1,alphao1,fo1); title('SNR = 3 dB'); subplot(133); commP25plot(Sx2,alphao2,fo2); title('SNR = -3 dB');
Этот раздел выполняет те же процедуры как в предыдущей и получает результаты классификации для каждого значения ОСШ. Функция commP25decision.m выполняет классификацию обнаружений спектра для всех возможных типов входного сигнала.
commP25decision(Sx0); % Ideal case
There is signal present. Checking for presence of C4FM. This is C4FM.
commP25decision(Sx1); % SNR = 3 dB
There is signal present. Checking for presence of C4FM. This is C4FM.
commP25decision(Sx2); % SNR = -3 dB
There is signal present. Checking for presence of C4FM. This is C4FM.
Согласно [8], следующая структура модуляции генерирует выходной сигнал CQPSK.
Модулятор CQPSK состоит из В Фазе и Квадратуре (я и Q) части. Входные биты обрабатываются интерполяционной таблицей [8], чтобы дать к 5-уровневому сигналу I/Q. Поскольку спецификация интерполяционной таблицы эквивалентна пи/4 DQPSK, пример использует Систему модулятора DQPSK object™, чтобы реализовать эту интерполяционную таблицу. Сигналы I/Q затем отфильтрованы с фильтром приподнятого косинуса, описанным в предыдущем случае.
% The size of input bits is 2*N, the size of output is 4*N x = randi([0,1],2*N,1); % Create a DQPSK modulator System object(TM) with bits as inputs, phase % rotation of pi/4 and Gray-coded constellation dqpskMod = comm.DQPSKModulator(pi/4,'BitInput',true); % Modulate and filter modout = dqpskMod(x); release(rctFilt); cqpsk_output = rctFilt(modout); y = cqpsk_output; % Ideal case, SNR = infinity y1 = awgn(y,3); % SNR = 3 dB y2 = awgn(y,-3); % SNR = -3 dB
Вычислите и постройте соответствующие спектральные автокорреляционные функции.
[Sx0,alphao0,fo0] = commP25ssca(y,1,1/64,1/(4*N)); [Sx1,alphao1,fo1] = commP25ssca(y1,1,1/64,1/(4*N)); [Sx2,alphao2,fo2] = commP25ssca(y2,1,1/64,1/(4*N)); fig3 = figure('Position',figposition([5 40 80 40])); subplot(131); commP25plot(Sx0,alphao0,fo0); title('Ideal case'); subplot(132); commP25plot(Sx1,alphao1,fo1); title('SNR = 3 dB'); subplot(133); commP25plot(Sx2,alphao2,fo2); title('SNR = -3 dB');
Код выходные параметры ниже показа результаты обнаружения CQPSK для трех различных значений ОСШ.
commP25decision(Sx0); % Ideal case
There is signal present. Checking for presence of C4FM. This is NOT C4FM. Checking for presence of CQPSK. This is CQPSK.
commP25decision(Sx1); % SNR = 3 dB
There is signal present. Checking for presence of C4FM. This is NOT C4FM. Checking for presence of CQPSK. This is CQPSK.
commP25decision(Sx2); % SNR = -3 dB
There is signal present. Checking for presence of C4FM. This is NOT C4FM. Checking for presence of CQPSK. This is CQPSK.
Этот случай задает один произвольный тип сигнала, обрабатывает его с детектором P25 cyclostationary и определяет, является ли это сигнал P25.
Спроектируйте КИХ equiripple фильтр lowpass и примените его к случайному входу. Не добавляйте шум в сигнал в этом случае. Попробуйте дополнительные типы сигнала и позвольте cyclostationary анализатору классифицировать их.
bcoeffs = firpm(200,[0 0.2 0.22 1],[1 1 0 0]); % Set N to achieve 40 dB rejection
input = randn(N,1);
y = filter(bcoeffs,1,input);
Затем мы вычисляем и строим спектральную автокорреляционную функцию. Обратите внимание на то, что различные характеристики модуляции каждого выражения сигнала существенно отличающийся SAFs.
[Sx,alphao,fo] = commP25ssca(y,1,1/64,1/(4*N));
fig4 = figure('Position',figposition([5 40 40 40]));
commP25plot(Sx,alphao,fo);
Выполните те же процедуры и получите результат классификации.
commP25decision(Sx);
There is signal present. Checking for presence of C4FM. This is NOT C4FM. Checking for presence of CQPSK. This is NOT CQPSK either, so it is not a P25 signal.
Этот случай применяет алгоритм обнаружения для полученного реального сигнала C4FM. Сигнал был передан радио P25 на уровне 446 МГц, полученных радио USRP™, и затем сохраненных MATLAB® в capturedc4fm.mat. Выполните те же процедуры и получите результат классификации.
load capturedc4fm.mat; y = y(1:4*N); agc = comm.AGC; y = 0.1*agc(y); [Sx,alphao,fo] = commP25ssca(y,1,1/64,1/(4*N)); fig5 = figure('Position',figposition([5 40 40 40])); commP25plot(Sx,alphao,fo); commP25decision(Sx);
There is signal present. Checking for presence of C4FM. This is C4FM.
В этом примере показано, как использовать cyclostationary выявление признаков, чтобы отличить сигналы различных схем модуляции. Алгоритм классифицирует сигналы на основе местоположения peaks в спектральной автокорреляционной функции. Выявление признаков Cyclostationary имеет преимущества перед некоторыми детекторами, как энергетический детектор, из-за его упругости к шуму.
Этот пример использует следующие скрипты и функции помощника:
Технологическая Заинтересованная группа P25: http://www.project25.org/
TETRA <https://en.wikipedia.org/wiki/Terrestrial_Trunked_Radio>
E. C. Как, "Несовместное распознавание модуляции через эксплуатацию циклической статистики". Тезис MS. 2007
E. C. Как, В. Д. Чакрэварти, П. Ратацци и З. Ву, "Классификация сигнала в исчезающих каналах Используя циклический спектральный анализ", журнал EURASIP на радиосвязях и организации сети, объеме 2009, 2009.
В. А. Гарднер, А. Наполитано и Л. Пора, "Cyclostationarity: Полвека исследования", Обработка сигналов, Издание 86, № 4, стр 639-697, 2006.
Э. Ль. Да Коста, "Обнаружение и идентификация сигналов Cyclostationary". Тезис MS. 1996.
Антонио Ф. Лима младший, "Анализ Низкой Вероятности Точки пересечения (линия на дюйм) Радио-Сигналы с помощью Обработки Cyclostationary". Тезис MS. 2002.
Проект 25 Стандарта ТИИ: <https://tiaonline.org/what-we-do/standards/>