Загрузите в рабочую область MATLAB ® MAT-файл, созданный в примере «Атрибуты сигнала метки», «Интересующие области» и «Точки». Проверьте, что маркированный набор сигналов содержит определения, которые вы добавили с помощью Signal Labeler.
load Whale_Songs
labelDefinitionsSummary(whalesongs)
ans=3×9 table
LabelName LabelType LabelDataType Categories ValidationFunction DefaultValue Sublabels Tag Description
______________ ___________ _____________ ____________ __________________ ____________ ___________________________ ___ ____________________________
"WhaleType" "attribute" "categorical" {3x1 string} {["N/A" ]} {0x0 double} {0x0 double } "" "Whale type"
"MoanRegions" "roi" "logical" {["N/A" ]} {0x0 double} {0x0 double} {0x0 double } "" "Regions where moans occur"
"TrillRegions" "roi" "logical" {["N/A" ]} {0x0 double} {0x0 double} {1x1 signalLabelDefinition} "" "Regions where trills occur"
Проверьте, что TrillPeaks
- подметка TrillRegions
.
labelDefinitionsHierarchy(whalesongs)
ans = 'WhaleType Sublabels: [] MoanRegions Sublabels: [] TrillRegions Sublabels: TrillPeaks '
Извлечение второго представителя набора. Извлеките имена переменных timetable.
song = getSignal(whalesongs,2); summary(song)
RowTimes: Time: 76579x1 duration Values: Min 0 sec Median 9.5722 sec Max 19.144 sec TimeStep 0.00025 sec Variables: whale2: 76579x1 double Values: Min -0.37326 Median 0 Max 0.37914
Постройте график сигнала.
t = song.Time; sng = song.whale2; plot(t,sng)
Использование signalMask
объект для отображения и идентификации необходимых областей, которые вы пометили. Для лучшего отображения измените значения меток с логических на категориальные.
mvals = getLabelValues(whalesongs,2,'MoanRegions'); mvals.Value = categorical(repmat("moan",size(mvals,1),1)); tvals = getLabelValues(whalesongs,2,'TrillRegions'); tvals.Value = categorical(repmat("trill",size(tvals,1),1)); msk = signalMask([mvals;tvals],'SampleRate',1/seconds(t(2)-t(1))); plotsigroi(msk,sng)
Отображение и идентификация peaks трелей.
pk = getLabelValues(whalesongs,2,{'TrillRegions','TrillPeaks'}); locs = zeros(size(pk,1),1); for kj = 1:length(locs) locs(kj) = find(seconds(t) == pk.Location(kj)); end hold on plot(seconds(t(locs)),sng(locs)+0.01,'v') text(seconds(t(locs))+0.2,sng(locs)+0.05,int2str(cell2mat(pk.Value))) hold off