Этот пример показывает, как использовать 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.
N = 4096; input = wgn(4*N,1,1);
Используйте область времени спектральная автокорреляционная функция, чтобы анализировать cyclostationary функции сигнала x (t). Запустите спектральную автокорреляционную функцию commP25ssca на входном сигнале. Эта функция оценивает идеальную спектральную автокорреляционную функцию с помощью алгоритма корреляции спектра полосы (SSCA) [3] временный метод сглаживания. Это - основанный на БПФ алгоритм сглаживания времени. Обратитесь к [6] для получения дополнительной информации о реализации этого алгоритма.
Запустите функцию построения графика commP25plot. Этот шаг иллюстрирует спектральную автокорреляционную функцию, которая является 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 определяет, содержит ли входной сигнал только шум. commP25decision_c4fm определяет, является ли входной сигнал сигналом C4FM. И commP25decision_cqpsk определяет, является ли входной сигнал сигналом 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 выполняет классификацию обнаружений спектра для всех возможных типов входного сигнала.
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://www.etsi.org/technologies-clusters/technologies/tetra/
E. C. Как, "Несовместное распознавание модуляции через эксплуатацию циклической статистики". Тезис MS. 2007
E. C. Как, В. Д. Чакрэварти, П. Ратацци и З. Ву, "Классификация сигнала в исчезающих каналах Используя циклический спектральный анализ", журнал EURASIP на радиосвязях и организации сети, объеме 2009, 2009.
В. А. Гарднер, А. Наполитано и Л. Пора, "Cyclostationarity: Полвека исследования", Обработка сигналов, Издание 86, № 4, стр 639-697, 2006.
Э. Ль. Да Коста, "Обнаружение и идентификация сигналов Cyclostationary". Тезис MS. 1996.
Антонио Ф. Лима младший, "Анализ Низкой Вероятности Прерывания (линия на дюйм) Радио-Сигналы с помощью Обработки Cyclostationary". Тезис MS. 2002.
Проект 25 стандарта ТИИ: https://www.tiaonline.org/what-we-do/standards/
USRP® является товарным знаком Корпорации National Instruments®.