主要内容

信号标签定义

创建信号标签定义

描述

使用信号标签定义为数据集创建信号标签定义。标签可以对应于属性、区域或关注点。使用信号标签定义对象来创建labeledSignalSet

创建

描述

sld= signalLabelDefinition (的名字创建信号标签定义对象,sld,的名字属性设置为的名字和其他属性设置为默认值。

例子

sld= signalLabelDefinition (的名字名称,值属性使用名称-值对。可以指定多个名称-值对。将每个属性名用引号括起来。

输入参数

全部展开

标号名称,指定为字符向量或字符串标量。

数据类型:字符|字符串

属性

全部展开

标号的名称,指定为字符向量或字符串标量。

数据类型:字符|字符串

标签类型,指定为以下之一:

  • “属性”-定义信号特征。

  • “投资回报”-定义感兴趣区域的信号特征。

  • “点”-定义感兴趣点的信号特征。

数据类型:字符|字符串

标签的数据类型,指定为“逻辑”“分类”“数字”“字符串”“表”,或“时间表”.使用类别属性,以指定将此属性设置为时的类别数组“分类”

数据类型:字符|字符串

标签类别名称,指定为字符串数组或字符向量的单元格数组。数组必须有唯一的元素。该属性仅在LabelDataType属性设置为“分类”

例子:“LabelDataType”、“分类”、“类别”,(“苹果”、“橙色”)

数据类型:字符|字符串

ROI限制的数据类型,指定为“双人”“持续时间”.此属性仅适用于以下情况LabelType被设置为“投资回报”

数据类型:字符|字符串

点位置的数据类型,指定为“双人”“持续时间”.此属性仅适用于以下情况LabelType被设置为“点”

数据类型:字符|字符串

验证函数,指定为函数句柄,在中设置标签值时使用labeledSignalSet对象。此属性仅在LabelDataType被设置为“分类”“逻辑”“数字”“表”,或“时间表”.如果未指定,该函数仅检查其输入值是否为正确的数据类型。如果LabelDataType被设置为“分类”时,该函数检查输入是否是使用类别.函数接受一个输入值并返回真的如果值是有效的如果该值无效。

例子:LabelDataType”、“数字”、“默认值, 1,ValidationFunction”,@ (x) x < 2

数据类型:function_handle

label的默认值,指定为使用LabelDataType.如果LabelDataType被设置为“分类”,然后默认值必须是使用类别

例子:LabelDataType”、“分类”、“类别”、“苹果”、“橙色”,“默认值“苹果”

数据类型:字符||逻辑|字符串|桌子

标签描述,指定为字符向量或字符串标量。

例子:“描述”,“患者正在睡觉”

数据类型:字符|字符串

标签标记符,指定为字符向量或字符串标量。使用此属性可在较大的标签方案或公共标签集中标识相同的标签。

例子:“标签”,“Peak1”

数据类型:字符|字符串

子标签数组,指定为信号标签定义对象。若要指定多个子标号,请将此属性设置为信号标号定义对象的向量。使用此属性可在父标签及其子标签之间创建关系。

请注意

子标签不能有子标签。

例子:Sublabels”,[signalLabelDefinition(“-”),signalLabelDefinition(“积极”)]

对象的功能

labelDefinitionsHierarchy 获取标签和子标签名称的分层列表
labelDefinitionsSummary 获取信号标签定义的汇总表

例子

全部崩溃

考虑一组鲸鱼的声音记录。鲸鱼的声音由颤音和呻吟组成。颤音听起来像是一连串的咔哒声。呻吟是类似于轮船喇叭声的低频叫声。你要观察每一个信号,并给它贴上标签,以识别鲸鱼的类型,颤音区和呻吟区。对于每个颤音区域,您还需要标记高于某个阈值的信号峰值。

信号标签定义

定义一个属性标签来存储鲸鱼类型。可能的类别是蓝鲸、座头鲸和白鲸。

dWhaleType = signalLabelDefinition (“WhaleType”...“LabelType”“属性”...“LabelDataType”“分类”...“类别”, [“蓝色”“座头鲸”“白色”],...“描述”“鲸鱼类型”);

定义一个感兴趣区域(ROI)标签以捕获呻吟区域。定义另一个ROI标签以捕获颤音区域。

dMoans=信号标签定义(“摩恩区”...“LabelType”“投资回报”...“LabelDataType”“逻辑”...“描述”“发出呻吟声的区域”);dTrills = signalLabelDefinition (“三区”...“LabelType”“投资回报”...“LabelDataType”“逻辑”...“描述”“颤音发生的区域”);

最后,定义一个点标签来捕获颤音峰值。属性的子标签数字钻孔定义。

dTrillPeaks = signalLabelDefinition (“TrillPeaks”...“LabelType”“点”...“LabelDataType”“数字”...“描述”“颤音峰”);dTrills。Sublabels = dTrillPeaks;

标记信号设置

创建一个labeledSignalSet使用鲸鱼信号和标签定义。添加标签值以识别鲸鱼类型、呻吟和颤音区域以及颤音峰值。

负载labelwhalesignalslbldefs = [dWhaleType dMoans dTrills];lss = labeledSignalSet({whale1 whale2},lbldefs,“成员名称”,{“Whale1”“Whale2”},...“SampleRate”,财政司司长,“描述”“描述波浪歌曲区域”);

使用。可视化标签层次结构和标签属性labelDefinitionsHierarchylabelDefinitionsSummary

labelDefinitionsHierarchy(lss)
ans = 'WhaleType子标签:[]MoanRegions子标签:[]TrillRegions子标签:TrillPeaks '
标签定义概要(lss)
ans =3×9表LabelName LabelType LabelDataType类别ValidationFunction DefaultValue Sublabels标签描述  ______________ ___________ _____________ ____________ __________________ ____________ ___________________________ ___ ____________________________ " WhaleType”“属性”“分类”{3 x1字符串}{【“N / A”】}{0 x0双}{0 x0双}””“鲸鱼输入"MoanRegions" "roi" "logical" {["N/A"]} {0x0 double} {0x0 double} {0x0 double} "" "发生呻吟的区域"" TrillRegions" "roi" "" logical" {["N/A"]} {0x0 double} {0x0 double} {1x1 signalLabelDefinition} ""发生颤音的区域"

加载数据中的信号与两只蓝鲸的歌声相对应。设置“WhaleType”两个信号的值。

setLabelValue(lss,1,“WhaleType”“蓝”); setLabelValue(lss,2,“WhaleType”“蓝”);

想象“标签”属性。该表具有新添加的“WhaleType”两个信号的值。

lss。标签
ans =2×3表WhaleType MoanRegions TrillRegions{0x2 table}{0x3 table}Whale2 blue{0x2 table}{0x3 table}

可视化区域标签

想象鲸鱼的歌声来识别颤音和呻吟区域。

次要情节(2,1,1)情节((0:长度(whale1) 1) / Fs, whale1) ylabel (“鲸鱼1”)子地块(2,1,2)图((0:length(whale2)-1)/Fs,whale2)标签(《鲸鱼2》

图中包含2个轴。Axes 1包含一个类型为line的对象。Axes 2包含一个类型为line的对象。

呻吟区是持续的低频哭声。

  • whale1呻吟的时间集中在7秒、12秒和17秒。

  • whale2它的呻吟集中在3秒、7秒和16秒。

将moan区域添加到标记集。以秒为单位指定ROI限制和标签值。

MOANREGIONSHALE1=[6.17.7;11.413.1;16.518.1];mrsz1=[size(MOANREGIONSHALE1,1)1];setLabelValue(lss,1,“摩恩区”、moanRegionsWhale1真实(mrsz1));moanRegionsWhale2 = [2.5 3.5;5.8 8;15.4 - 16.7);mrsz2 = [size(moanRegionsWhale2,1) 1];setLabelValue (lss 2“摩恩区”、moanRegionsWhale2真实(mrsz2));

颤音区域有明显的爆发声,被寂静打断。

  • whale1以2秒为中心的颤音。

  • whale2颤音集中在12秒左右。

将颤音区域添加到标记集。

trillRegionWhale1=[1.4 3.1];trsz1=[size(trillRegionWhale1,1)1];setLabelValue(lss,1,“三区”、trillRegionWhale1真实(trsz1));trillRegionWhale2 = [11.1 13];trsz2 = [size(trillRegionWhale1,1) 1];setLabelValue (lss 2“三区”、trillRegionWhale2真实(trsz2));

创建一个signalMask对象,并使用它来可视化和标记不同的区域。为了更好地显示,请将标签值从逻辑更改为分类。

mr1 = getLabelValues (lss 1“摩恩区”);mr1.值=分类(repmat)(“呻吟”,mrsz1);tr1=GetLabelValue(lss,1,“三区”);tr1。值=分类(repmat (“颤音”,trsz1);msk1=信号掩码([mr1;tr1],“SampleRate”子地块(2,1,1)plotsigroi(msk1,whale1)ylabel(“鲸鱼1”)持有在…上mr2=GetLabelValue(lss,2,“摩恩区”); mr2.值=分类(repmat(“呻吟”mrsz2));tr2 = getLabelValues (lss 2“三区”);tr2.Value=分类(repmat(“颤音”trsz2));msk2 = signalMask ([mr2; tr2],“SampleRate”子地块(2,1,2)plotsigroi(msk2,whale2)ylabel(《鲸鱼2》)持有在…上

图中包含2个轴。axis 1包含3个类型为line的对象。axis 2包含3个类型为line的对象。

可视化点标签

为每个颤音区域标记三个峰值。对于点标签,指定点位置和标签值。在本例中,点位置以秒为单位。

peakLocsWhale1 = [1.553 1.626 1.7];peakValsWhale1 = [0.211 0.254 0.211];setLabelValue (lss 1“TrillRegions”“TrillPeaks”],...peakLocsWhale1 peakValsWhale1,“LabelRowIndex”1);次要情节(2,1,1)情节(peakLocsWhale1 peakValsWhale1,“v”)持有peakLocsWhale2 = [11.214 11.288 11.437];peakValsWhale2 = [0.119 0.14 0.15];setLabelValue (lss 2“TrillRegions”“TrillPeaks”],...peakLocsWhale2 peakValsWhale2,“LabelRowIndex”1);次要情节(2,1,2)情节(peakLocsWhale2 peakValsWhale2,“v”)持有

图形包含2个轴。轴1包含4个线型对象。轴2包含4个线型对象。

探索标签值

使用的标签值GetLabelValue

getLabelValues (lss)
ans =2×3表Whale1 blue {3x2 table} {1x3 table} Whale2 blue {3x2 table} {1x3 table}

为标记集的第一个成员检索呻吟区域。

getLabelValues (lss 1“摩恩区”
ans =3×2表ROILimits价值  ____________ _____ 11.4 - 13.1 6.1 - 7.7 {[1]} {[1]} 16.5 - 18.1 {[1]}

使用第二个输出参数列出标签的子标签。

[value,valueWithSublabel]=GetLabelValue(lss,1,“三区”
价值观=1×2表ROILimits值__________ _____ 1.4 3.1 {[1]}
带有子标签的值=1×3表ROILimits价值Sublabels TrillPeaks  __________ _____ ___________ 1.4 - 3.1 {[1]} {3 x2表}

要检索子标签中的值,请将标签名称表示为一个双元素数组。

getLabelValues (lss 1“TrillRegions”“TrillPeaks”])
ans =3×2表位置值  ________ __________ 1.553 {[0.2110]} 1.626 1.7 {[0.2540]} {[0.2110]}

找出第三个颤音峰值对应于集合的第二个成员。

getLabelValues (lss 2“TrillRegions”“TrillPeaks”],...“LabelRowIndex”, 1“子标签LowIndex”3)
ans =1×2表位置值  ________ __________ 11.437 {[0.1500]}

使用MATLAB®指定一组音频信号的路径,包括在MAT-files中。每个文件包含一个信号变量和一个采样率。列出文件的名称。

文件夹= fullfile (matlabroot,“工具箱”“matlab”“音视频”);lst = dir(添加文件夹,“/ * .mat”));nms = {lst (:) . name}’
nms =7 x1细胞{的唧唧声。垫的}{'gong.mat' } {'handel.mat' } {'laughter.mat'} {'mtlb.mat' } {'splat.mat' } {'train.mat' }

创建指向指定文件夹的信号数据存储。设置采样率变量名称为Fs,这对所有文件都是通用的。生成排除该文件的数据存储的子集mtlb.mat。将子集数据存储用作labeledSignalSet对象

sds=信号数据存储(文件夹,“SampleRateVariableName”“财政司司长”);sds=子集(sds,~strcmp(nms,“mtlb.mat”));lss = labeledSignalSet (sds);

创建三个标签定义来标记信号:

  • 定义一个逻辑属性标签,用于包含人类声音的信号。

  • 定义一个数字点标签,标记每个信号的最大位置和幅度。

  • 定义分类感兴趣区域(ROI)标签,以挑选出每个信号的非重叠、均匀长度的随机区域。

将信号标签定义添加到已标记的信号集。

vc=信号标签定义(“声音”“LabelType”“属性”...“LabelDataType”“逻辑”“DefaultValue”,false);mx=信号标签定义(“最大值”“LabelType”“点”...“LabelDataType”“数字”); rs=信号标签定义(“RanROI”“LabelType”“投资回报”...“LabelDataType”“分类”“类别”,[“投资回报”“其他”]);(vc mx rs) addLabelDefinitions (lss)

标签的信号:

  • 标签“汉德尔·马特”“laughter.mat”拥有人类的声音。

  • 使用islocalmax函数查找每个信号的最大值。标记它的位置和值。

  • 使用兰德罗函数生成尽可能多的长度区域N/10个样本,以适合一个长度的信号N给定最小间隔N/6个区域之间的样本。标记其位置并将其分配给投资回报率类别。

标记点和区域时,将采样值转换为时间值。减去1表示MATLAB®数组索引,然后除以采样率。

kj=1;虽然Hasdata (sds) [sig,info] = read(sds);fs = info.SampleRate;[~, fn] = fileparts (info.FileName);如果fn = =“汉德尔”||fn==“笑声”setLabelValue (lss kj,“声音”,对)结束xm =找到(islocalmax(团体,“MaxNumExtrema”1));setLabelValue (lss kj,“最大值”,(xm-1)/fs,sig(xm)) N = length(sig);roi = randROI (N (N / 10),圆(N / 6));setLabelValue (lss kj,“RanROI”、(rois-1) / fs repelem (“投资回报”,尺寸(ROI,1)))kj=kj+1;结束

确认只有两个信号包含声音。

可计数值(lss,“声音”
ans =2×3表语音统计百分比_____ _____ _______假4 66.667真2 33.333

验证两个信号的最大振幅为1。

可计数值(lss,“最大值”
ans =5×4表最大计数百分比MemberCount\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.8000000000004411 16.667 1 0.89113915798421611 16.667 1 0.9473076923072951 16.667.667.051

确认每个信号有四个不重叠的随机感兴趣区域。

可计数值(lss,“RanROI”
ans =2×4表RanROI计数MemberCount百分比  ______ _____ _______ ___________ ROI 24 100 6 0 0 0

用标记信号集中的数据创建两个数据存储:

  • signalDatastore对象sd包含信号数据。

  • arrayDatastore对象ld包含标签信息。指定要包含与所创建的所有标签相对应的信息。

(sd, ld) = createDatastores (lss, (“声音”“RanROI”“最大值”]);

使用数据存储中的信息绘制信号并显示其标签。

  • 使用一个signalMask对象以蓝色高亮感兴趣的区域。

  • 用黄线标出最大值的位置。

  • 为包含人声的信号添加一个红色轴标签。

tiledlayout虽然Hasdata (sd) [sg,nf] = read(sd); / /读取数据lbls =阅读(ld);nexttile msk = signalMask(lbls{:}。RanROI {:},“SampleRate”, nf.SampleRate);plotsigroi colorbar (msk, sg)包含('') (X, Y) = meshgrid (lbls {:} .Maximum {:} .Location, ylim);持有在…上图(X,Y,“线宽”2,“颜色”"EDB120")持有如果lbls{:}。声音{:}ylabel (“声音”“颜色”“# D95319”结束结束

图中包含6个轴。axis 1包含4个类型为line的对象。axis 2包含4个类型为line的对象。axis 3包含4个类型为line的对象。axis 4包含4个类型为line的对象。axis 5包含4个类型为line的对象。axis 6包含4个类型为line的对象。

功能roilims = randROI(N,wid,sep) num = floor((N+sep)/(wid+sep));总部= histcounts (randi (num + 1, 1, N-num * wid - (num-1) * 9), (1: num + 2) 1/2);roilims = (1 + (0: num-1) * (wid + 9) + cumsum(总部(1:num)))”+ [0 wid-1];结束

另请参阅

应用程序

对象

介绍了R2018b