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

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

Импортируйте данные в Signal Labeler

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

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

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

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

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

  2. В диалоговом окне задайте Маркировать Name как WaveFormType, выберите Label Type of Attribute, введите Тип данных как string.

  3. Нажать ОК.

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

Создайте метку видимой области (ROI) для длительности импульса, которая соответствует областям, показывающим, что начальные и итоговые пересечения использовались для расчета каждой длительности импульса. Задайте Маркируют Name как PulseWidth, Маркируйте Type как ROI и тип данных как numeric. Определения метки появляются в Маркировать браузере Definitions.

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

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

  1. Для функции, которая вычисляет PRF, введите computePRF в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.

  2. Для функции, которая вычисляет пропускную способность, введите computeBandWidth в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.

  3. Для функции, которая вычисляет рабочий цикл, введите computeDutyCycle в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.

  4. Для функции, которая вычисляет длительность импульса, введите computePulseWidth в Поле имени и выбирают ROI как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.

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

Маркируйте Waveform Type, PRF, Bandwidth, Duty Cycle и Pulsewidth

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

  1. В Помеченном Настроенном Браузере Сигнала установите флажок рядом с radarData1.

  2. Кликните по вкладке Display и выберите Spectrogram в разделе Views. Отображения приложения набор осей со спектрограммой сигнала и вкладки Spectrogram с опциями, чтобы управлять представлением.

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

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

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

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

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

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

Вычислите и маркируйте PRF входных сигналов.

  1. Выберите PRF в Маркировать браузере Definitions.

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

  3. Нажмите Auto-Label и выберите Auto-Label All Signals. В диалоговом окне, которое появляется, нажать ОК.

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

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

Подтвердите помеченные сигналы

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

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

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

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

Экспортируйте помеченные сигналы

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

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

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

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

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

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

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

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 Функция: Вычислите ширину полосы пропускания импульса

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 Функция: Вычислите импульсный рабочий цикл

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 Функция: Вычислите ширину импульса

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