Этот пример показывает, как пометить основные временные и частотные функции импульсных радиолокационных сигналов. Этот шаг облегчает процесс создания полных и точных наборов данных для обучения моделей искусственного интеллекта (ИИ). Signal Labeler облегчает эту задачу двумя способами. В ручном режиме синхронизированные временные и частотно-временные представления помогают пользователям идентифицировать частотные функции, такие как тип формы волны, которые могут быть либо Rectangular
, LinearFM
, или SteppedFM
в этом примере. В автоматическом режиме пользователи могут регистрировать функции, которые измеряют частоту повторения импульсов (PRF), ширину импульсов, коэффициент заполнения и ширину полосы пропускания импульса и только исправляют ошибки вместо маркировки всех сигналов с нуля. Встроенная инструментальная панель помогает отслеживать прогресс в маркировке и оценивать качество меток.
Радиолокационные сигналы, которые будут маркированы в этом примере, хранятся в отдельных MAT-файлах. Каждый файл содержит переменную данных x
и соответствующую переменную частоты дискретизации Fs
.
Откройте Signal Labeler. На вкладке Labeler нажмите Import и выберите From Folders
в списке Представители. В диалоговом окне выберите директорию с файлами радиолокационных сигналов. Чтобы задать переменные сигнала, которые вы хотите считать, нажмите Задать и ввести x
. Добавить информацию о времени: Выберите Working in
опция и выберите Time
из раскрывающегося списка. Выберите Sample Rate Variable From Files
в списке и введите Fs
. Нажмите кнопку Импорт. Импортированные файлы появляются в браузере маркированного набора сигналов. Постройте график сигналов путем установки флажков рядом с их именами.
Задайте метки
Создайте определение метки для типа формы сигнала.
Создайте метку строкового атрибута, чтобы пометить тип формы волны. Нажмите Add на вкладке Labeler и выберите Add Label Definition
.
В диалоговом окне укажите имя метки следующим WaveFormType
, выберите тип метки атрибута, введите тип данных следующим string
.
Нажмите кнопку ОК.
Повторите действия 1-3, чтобы создать определения меток атрибутов для PRF, коэффициента заполнения и полосы пропускания. Измените имя метки для каждого и установите тип данных следующим numeric
.
Создайте метку видимой области (ROI) для ширины пульса, которая соответствует областям, показывающим начальные и окончательные пересечения, используемые для вычисления каждой ширины пульса. Укажите имя метки следующим PulseWidth
, Тип метки как информация только для чтения и Тип данных как numeric
. Определения меток отображаются в браузере «Определения меток».
Создайте пользовательские функции автоматической маркировки
Создайте четыре пользовательские функции маркировки для маркировки PRF, полосы пропускания, коэффициента заполнения и ширины пульса. (Код для функций computePRF, computeBandWidth, computeDutyCycle и computePulseWidth появляется позже в примере). Чтобы создать каждую функцию, на вкладке Labeler, нажмите Automate Value и выберите Add Custom Function. Signal Labeler показывает диалоговое окно с запросом имени, описания и типа метки функции.
Для функции, которая вычисляет PRF, введите computePRF
в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.
Для функции, которая вычисляет пропускную способность, введите computeBandWidth
в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.
Для функции, вычисляющей коэффициент заполнения, введите computeDutyCycle
в поле «Имя» и выберите «Атрибут» в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.
Для функции, которая вычисляет ширину пульса, введите computePulseWidth
в поле Имя и выберите информация только для чтения в качестве типа метки. Можно оставить поле Описание пустым или ввести собственное описание.
Если вы уже написали функции и функции находятся в текущей папке или в пути MATLAB ®, Signal Labeler добавляет функции в галерею. Если вы не написали функции, Signal Labeler открывает пустые шаблоны в редактор, чтобы вы вводили или вставляли код. Сохраните файлы. Как только вы сохраняете файлы, функции появляются в галерее.
Маркируйте тип волны, PRF, полосу пропускания, коэффициент заполнения и длительность пульса
Установите тип формы волны каждого сигнала:
В браузере маркированных наборов сигналов установите флажок рядом с radarData1.
Перейдите на вкладку « Отображение» и выберите «Спектрограмма» в разделе «Виды». Приложение отображает набор осей со спектрограммой сигнала и вкладкой Spectrogram с опциями для управления представлением.
Щелкните вкладку Spectrogram и установите процент перекрытия равным 99
.
Спектрограмма показывает, что сигнал прямоугольной формы. В таблице атрибутов метки средства просмотра дважды кликните камеру ниже WaveFormType и введите Rectangular
.
Повторите этот шаг маркировки вручную для всех сигналов в наборе данных.
Это пример Rectangular
форма волны:
Это пример LinearFM
форма волны:
Это пример SteppedFM
форма волны:
Вычислите и пометьте PRF входных сигналов.
Выберите PRF в браузере «Определений меток».
В галерее Automate Value выберите computePRF
.
Щелкните Автометка (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