Маркировка радиолокационных сигналов Signal Labeler

Этот пример показывает, как пометить основные временные и частотные функции импульсных радиолокационных сигналов. Этот шаг облегчает процесс создания полных и точных наборов данных для обучения моделей искусственного интеллекта (ИИ). Signal Labeler облегчает эту задачу двумя способами. В ручном режиме синхронизированные временные и частотно-временные представления помогают пользователям идентифицировать частотные функции, такие как тип формы волны, которые могут быть либо Rectangular, LinearFM, или SteppedFM в этом примере. В автоматическом режиме пользователи могут регистрировать функции, которые измеряют частоту повторения импульсов (PRF), ширину импульсов, коэффициент заполнения и ширину полосы пропускания импульса и только исправляют ошибки вместо маркировки всех сигналов с нуля. Встроенная инструментальная панель помогает отслеживать прогресс в маркировке и оценивать качество меток.

Импорт данных в Signal Labeler

Радиолокационные сигналы, которые будут маркированы в этом примере, хранятся в отдельных MAT-файлах. Каждый файл содержит переменную данных x и соответствующую переменную частоты дискретизации Fs.

Откройте Signal Labeler. На вкладке Labeler нажмите Import и выберите From Folders в списке Представители. В диалоговом окне выберите директорию с файлами радиолокационных сигналов. Чтобы задать переменные сигнала, которые вы хотите считать, нажмите Задать и ввести x. Добавить информацию о времени: Выберите Working in опция и выберите Time из раскрывающегося списка. Выберите Sample Rate Variable From Files в списке и введите Fs. Нажмите кнопку Импорт. Импортированные файлы появляются в браузере маркированного набора сигналов. Постройте график сигналов путем установки флажков рядом с их именами.

Задайте метки

Создайте определение метки для типа формы сигнала.

  1. Создайте метку строкового атрибута, чтобы пометить тип формы волны. Нажмите Add на вкладке Labeler и выберите Add Label Definition.

  2. В диалоговом окне укажите имя метки следующим WaveFormType, выберите тип метки атрибута, введите тип данных следующим string.

  3. Нажмите кнопку ОК.

Повторите действия 1-3, чтобы создать определения меток атрибутов для PRF, коэффициента заполнения и полосы пропускания. Измените имя метки для каждого и установите тип данных следующим numeric.

Создайте метку видимой области (ROI) для ширины пульса, которая соответствует областям, показывающим начальные и окончательные пересечения, используемые для вычисления каждой ширины пульса. Укажите имя метки следующим PulseWidth, Тип метки как информация только для чтения и Тип данных как numeric. Определения меток отображаются в браузере «Определения меток».

Создайте пользовательские функции автоматической маркировки

Создайте четыре пользовательские функции маркировки для маркировки PRF, полосы пропускания, коэффициента заполнения и ширины пульса. (Код для функций computePRF, computeBandWidth, computeDutyCycle и computePulseWidth появляется позже в примере). Чтобы создать каждую функцию, на вкладке Labeler, нажмите Automate Value и выберите Add Custom Function. Signal Labeler показывает диалоговое окно с запросом имени, описания и типа метки функции.

  1. Для функции, которая вычисляет PRF, введите computePRF в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.

  2. Для функции, которая вычисляет пропускную способность, введите computeBandWidth в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.

  3. Для функции, вычисляющей коэффициент заполнения, введите computeDutyCycle в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.

  4. Для функции, которая вычисляет ширину пульса, введите computePulseWidth в поле Имя и выберите информация только для чтения в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.

Если вы уже написали функции и функции находятся в текущей папке или в пути MATLAB ®, Signal Labeler добавляет функции в галерею. Если вы не написали функции, Signal Labeler открывает пустые шаблоны в редактор, чтобы вы вводили или вставляли код. Сохраните файлы. Как только вы сохраняете файлы, функции появляются в галерее.

Маркируйте тип волны, PRF, полосу пропускания, коэффициент заполнения и длительность пульса

Установите тип формы волны каждого сигнала:

  1. В браузере маркированных наборов сигналов установите флажок рядом с radarData1.

  2. Перейдите на вкладку « Отображение» и выберите «Спектрограмма» в разделе «Виды». Приложение отображает набор осей со спектрограммой сигнала и вкладкой Spectrogram с опциями для управления представлением.

  3. Щелкните вкладку Spectrogram и установите процент перекрытия равным 99.

  4. Спектрограмма показывает, что сигнал прямоугольной формы. В таблице атрибутов метки средства просмотра дважды кликните камеру ниже WaveFormType и введите Rectangular.

  5. Повторите этот шаг маркировки вручную для всех сигналов в наборе данных.

Это пример Rectangular форма волны:

Это пример LinearFM форма волны:

Это пример SteppedFM форма волны:

Вычислите и пометьте PRF входных сигналов.

  1. Выберите PRF в браузере «Определений меток».

  2. В галерее Automate Value выберите computePRF.

  3. Щелкните Автометка (Auto-Label) и выберите Auto-Label All Signals. В появившемся диалоговом окне нажмите кнопку ОК.

Повторите вышеописанные шаги для полосы пропускания, коэффициента заполнения и пульсации, выбрав соответствующее определение метки и функцию автометки.

Signal Labeler вычисляет и помечает все сигналы, но отображает метки только для сигналов, флажки которых установлены.

Валидация маркированных сигналов

Просмотрите прогресс маркировки и проверьте правильность вычисленных значений метки. Выберите WaveFormType в браузере Определения и нажмите Dashboard на вкладке Labeler.

График слева показывает прогресс маркировки, который составляет 100%, так как все сигналы маркированы WaveFormType метка. На график справа показано количество сигналов с метками для каждого значения метки. Можно использовать круговую диаграмму Распределение меток (Label Distribution), чтобы оценить точность маркировки и подтвердить ожидаемые результаты.

Затем проверьте, что все значения меток ширины пульса распределены вокруг 5e-5. Чтобы просмотреть распределение значений меток по времени, нажмите Definition Selection на вкладке Dashboard и выберите PulseWidth. Щелкните на графике распределения времени и на вкладке «Панель мониторинга» установите значение « Интервалы» 3, X Min к 4e-5 и X Max, чтобы 6e-5. Все сигналы имеют пульсовую ширину, распределенную вокруг 5e-5.

Закройте инструментальную панель.

Экспорт маркированных сигналов

Экспортируйте маркированные сигналы для обучения моделей ИИ. На вкладке Labeler нажмите Экспорт и выберите Labeled Signal Set To File. В появившемся диалоговом окне дайте имя radarDataLss.mat к маркированному набору сигналов и добавить необязательное краткое описание. Нажмите Экспорт.

Вернитесь к Командному окну MATLAB ®. Загрузите маркированный набор сигналов и создайте хранилища данных сигналов и меток из маркированного набора сигналов. Создайте комбинированный datastore с хранилищами сигналов и меток. Использование read или readall чтобы получить пары метки сигнала, которые можно использовать для обучения моделей ИИ.

load radarDataLss.mat
[signalDS,labelDs] = ls.createDatastores('WaveFormType');
combineDs = combine(signalDS,labelDs);

Сводные данные

В этом примере вы видели, как пометить основные временные и частотные функции шумных импульсных радиолокационных сигналов. Вы видели, как использовать синхронизированные представления времени и частоты для идентификации частотных функций, таких как тип формы волны. Вы видели, как зарегистрировать пользовательские функции автометки для маркировки PRF, ширины импульса, коэффициента заполнения и полосы ширины полосы пропускания импульса. Вы видели, как использовать встроенную инструментальную панель для отслеживания прогресса маркировки и оценки качества меток.

Вспомогательные функции

computePRF Функция: Вычислите частоту повторения импульса

The computePRF функция вычисляет и помечает PRF входного сигнала. Он использует pulseperiod функция.

function [labelVal,labelLoc] = computePRF(x,t,parentLabelVal,parentLabelLoc,varargin)
% Function to calculate pulse repetition frequency of a radar pulse

if~isreal(x)
    x = abs(x);
end
pri = pulseperiod(x,t);
labelVal = 1/pri(1);
labelLoc = [];
end

computeBandWidth Функция: Вычислите ширину полосы пропускания импульса

The computeBandWidth функция вычисляет и помечает полосу пропускания спектра входного сигнала. Он использует obw функция.

function [labelVal,labelLoc] = computeBandWidth(x,t,parentLabelVal,~,varargin)
% Function to calculate occupied bandwidth of a radar pulse
if~isreal(x)
    x = abs(x);
end
fs = 1/mean(diff(t));
labelVal = obw(x,fs);
labelLoc = [];
end

computeDutyCycle Функция: Вычислите импульсный коэффициент заполнения

The computeDutyCycle функция вычисляет и помечает коэффициент заполнения входного сигнала. Он использует dutycycle функция.

function [labelVal,labelLoc] = computeDutyCycle(x,t,parentLabelVal,parentLabelLoc,varargin)
% Function to calculate duty cycle of a radar pulse
if~isreal(x)
    x = abs(x);
end
labelVal = dutycycle(x,t);
labelLoc = [];
end

computePulseWidth Функция: Вычислите ширину импульса

The computePulseWidth функция вычисляет и помечает импульсную ширину входного сигнала. Он использует pulsewidth функция.

function [labelVal,labelLoc] = computePulseWidth(x,t,parentLabelVal,parentLabelLoc,varargin)
% Function to calculate pulse width of a radar pulse
if~isreal(x)
    x = abs(x);
end
[pw,ic,fc] = pulsewidth(x,t);
labelVal = pw(1);
labelLoc = [ic(1) fc(1)];
end