Маркируйте Radar Signals with 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 File в списке и вводят Fs. Нажмите Import. Импортированные файлы появляются в Помеченном Настроенном Браузере Сигнала. Постройте сигналы путем устанавливания флажков рядом с их именами.

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

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

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

  2. В диалоговом окне задайте Маркировать Name как WaveFormType and маркировать Type как атрибут. Установите тип данных на string.

  3. Нажать ОК.

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

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

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

Используйте четыре пользовательских функции маркировки, чтобы маркировать PRF, полосу пропускания, рабочий цикл и ширину импульса. Код для этих функций дан в разделе Supporting Functions примера. Чтобы создать каждую функцию, во вкладке 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);

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

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

Смотрите также

Приложения

Функции

Похожие темы