В этом примере показано, как пометить основное время и функции частоты импульсных радарных сигналов. Этот шаг упрощает процесс создания наборов полных и точных данных, чтобы обучить модели искусственного интеллекта (AI). Signal Labeler упрощает эту задачу двумя способами. В ручном режиме синхронизируемое время и представления частоты времени помогают вам идентифицировать функции частоты, такие как тип формы волны, который может быть Rectangular
, LinearFM
, или SteppedFM
. В автоматизированном режиме вы можете функции регистра, которые измеряют импульсную частоту повторения (PRF), ширину импульса, рабочий цикл и ширину полосы пропускания импульса и только корректируют ошибки вместо того, чтобы пометить все сигналы с нуля. Встроенная инструментальная панель помогает отследить маркировку, прогрессируют и оценивают качество меток.
Радарные сигналы в этом примере хранятся в отдельных файлах MAT. Каждый файл содержит переменную данных x
и соответствующая переменная Fs
частоты дискретизации.
Открытый Signal Labeler. На вкладке Labeler нажмите Import и выберите From Folders
в списке членов. В диалоговом окне выберите директорию с радарными файлами сигнала. Чтобы задать переменные сигнала, которые вы хотите считать, нажмите Specify и введите x
. Добавьте время информация: Выберите Working in
опция и выбирает Time
из списка. Выберите Sample Rate Variable From File
в списке и вводят Fs
. Нажмите Import. Импортированные файлы появляются в Помеченном Настроенном Браузере Сигнала. Постройте сигналы путем устанавливания флажков рядом с их именами.
Задайте метки
Создайте определение метки для типа формы волны сигнала.
Создайте метку атрибута строки, чтобы пометить тип формы волны. Нажатие кнопки Прибавляет вкладку Labeler и выбирает Add Label Definition
.
В диалоговом окне задайте Маркировать Name как WaveFormType and
маркировать Type как атрибут. Установите тип данных на string
.
Нажать ОК.
Повторите эти шаги, чтобы создать определения метки атрибута для PRF, рабочего цикла и полосы пропускания. Измените имя метки для каждого и установите тип данных как numeric
.
Создайте метку видимой области (ROI) для ширины импульса, которая соответствует областям, показывающим, что начальные и итоговые пересечения использовались для расчета каждой ширины импульса. Задайте Маркируют Name как PulseWidth
, Маркируйте Type как ROI и тип данных как numeric
. Определения метки появляются в Маркировать браузере Definitions.
Создайте пользовательские функции автомаркировки
Используйте четыре пользовательских функции маркировки, чтобы маркировать PRF, полосу пропускания, рабочий цикл и ширину импульса. Код для этих функций дан в разделе Supporting Functions примера. Чтобы создать каждую функцию, во вкладке Labeler, нажимают Automate Value и выбирают Add Custom Function. Signal Labeler показывает диалоговое окно, где вы вводите имя, описание, и помечаете тип функции.
Для функции, которая вычисляет PRF, введите computePRF
в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.
Для функции, которая вычисляет полосу пропускания, введите computeBandWidth
в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.
Для функции, которая вычисляет рабочий цикл, введите computeDutyCycle
в Поле имени и выбирают Attribute как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.
Для функции, которая вычисляет ширину импульса, введите computePulseWidth
в Поле имени и выбирают ROI как Маркировать Type. Можно оставить поле Description пустым, или можно ввести собственное описание.
Если вы уже записали функции, и функции находятся в текущей папке или в пути MATLAB®, Signal Labeler добавляет функции в галерею. Если вы не записали функции, Signal Labeler открывает пустые шаблоны в Редакторе для вас, чтобы ввести или вставить код. Сохраните файлы. Если вы сохранили файлы, функции появляются в галерее.
Маркируйте Waveform Type, PRF, Bandwidth, Duty Cycle и Pulsewidth
Установите тип формы волны каждого сигнала:
В Помеченном Настроенном Браузере Сигнала установите флажок рядом с radarData1.
Кликните по вкладке Display и выберите Spectrogram в разделе Views. Отображения приложения набор осей со спектрограммой сигнала и вкладки Spectrogram с опциями, чтобы управлять представлением.
Кликните по вкладке Spectrogram и установите процент перекрытия на 99
.
Спектрограмма показывает, что форма волны сигнала является прямоугольной. В таблице атрибутов средства просмотра метки дважды кликните ячейку ниже WaveFormType и введите Rectangular
.
Повторите этот ручной шаг маркировки для всех сигналов в наборе данных.
Пример Rectangular
форма волны следует.
Пример LinearFM
форма волны следует.
Пример SteppedFM
форма волны следует.
Вычислите и маркируйте PRF входных сигналов.
Выберите PRF в Маркировать браузере Definitions.
В галерее Automate Value выберите computePRF
.
Нажмите 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