主要内容

signalLabelDefinition

创建信号标签定义

描述

使用signalLabelDefinition为数据集创建信号标签定义。标签可以对应属性、区域或感兴趣的点。使用向量signalLabelDefinition对象创建一个LabeledSignalSet.

创造

描述

道防线= signallabeldefinition(名称创建信号标签定义对象,道防线,与名称物业设为名称和其他属性设置为默认值。

例子

道防线= signallabeldefinition(名称名称,价值性质使用名称值对。您可以指定多个名称值对。将每个属性名称括在引号中。

输入参数

全部展开

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

数据类型:char|一串

性质

全部展开

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

数据类型:char|一串

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

  • '属性'—定义信号特性。

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

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

数据类型:char|一串

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

数据类型:char|一串

标签类别名称,指定为字符串数组或字符向量的单元格数组。数组必须具有唯一的元素。此属性仅适用于LabelDataType属性设置为“绝对的”

例子:'LabeldAtype','分类','类别',[“Apple”,“橙色”]

数据类型:char|一串

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

数据类型:char|一串

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

数据类型:char|一串

参数中设置标号值时,指定为函数句柄并使用LabeledSignalSet.对象。此属性仅适用于以下情况LabelDataType被设定为“绝对的”'逻辑'“数字”'桌子''时间表'. 如果未指定,则函数仅检查其输入值是否为正确的数据类型。如果LabelDataType被设定为“绝对的”,该功能检查输入是使用的值之一类别.该函数取得输入值并返回真正的如果该值有效且错误的如果该值无效。

例子:'LabelDataType','数字','DefaultValue',1,'验证函数',@(x)x <2

数据类型:function_handle.

标签的默认值,指定为使用LabelDataType. 如果LabelDataType被设定为“绝对的”, 然后DefaultValue必须是使用指定的值之一类别

例子:'LabelDataType','分类','类别',[“苹果”,“橙色”],'DefaultValue”,“苹果”

数据类型:char|双重的|逻辑|一串|表格

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

例子:“描述”、“病人睡着了”

数据类型:char|一串

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

例子:'标签','peak1'

数据类型:char|一串

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

笔记

Sublabels不能有子标签。

例子:'Sublabels.',[signallabledefinition(“否定”),signallabledefinition(“积极”)]

对象功能

labelDefinitionsHierarchy 获取标签和子标签名称的层次列表
标签定义概述 获取信号标签定义的汇总表

例子

全部折叠

想想一组鲸鱼的声音录音。记录下来的鲸鱼声音包括颤音和呻吟声。颤音听起来像是一连串的咔哒声。呻吟低频哭泣与船角的声音类似。您想查看每个信号并将其标记以识别鲸鲸类型,颤音区域和呻吟区域。对于每个TRILL区域,您还需要标记高于某个阈值的信号峰值。

信号标签定义

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

dWhaleType=信号标签定义(“WhalType”...'labeltype''属性'...'labeldatatype'“绝对的”...“类别”,(“蓝色”“座头鲸”“白色的”],...'描述''鲸型');

定义一个感兴趣区域(ROI)标签来捕获抱怨区域。定义另一个ROI标签来捕获颤音区域。

dMoans = signalLabelDefinition (“MoanRegions”...'labeltype'“投资回报率”...'labeldatatype''逻辑'...'描述'呻吟的地区发生了“); dTrills=信号标签定义(“TrillRegions”...'labeltype'“投资回报率”...'labeldatatype''逻辑'...'描述'“颤音出现的区域”);

最后,定义点标签以捕获速率峰值。将此标签设置为SublabeldTrills定义。

dtrillpeaks = signallabeldefinition(“颤音峰”...'labeltype'“点”...'labeldatatype'“数字”...'描述''trill山峰'); dTrills.Sublabels=dtrillpeak;

标记信号集

创建一个LabeledSignalSet.用鲸鱼信号和标签定义。添加标签值来识别鲸鱼类型,呻吟和颤音区域,以及颤音的峰值。

加载labelwhalesignalslbldefs=[dWhaleType dMoans DTRILL];lss=标签信号集({whale1 whale2},lbldefs,“MemberNames”,{“Whale1”“Whale2”},...“采样器”Fs,'描述''表征波浪歌曲区域');

使用可视化标签层次结构和标签特性labelDefinitionsHierarchy标签定义概述

labelDefinitionsHierarchy (lss)
ans ='whaletype sublabels:[] moanregions sublabels:[] Trillregions sublabels:trillpeaks'
labelDefinitionsSummary (lss)
ans=3×9表LabelName LabelType LableDataType类别验证功能DefaultValue Sublabels标记说明____________________________________________________________________________________________trype“{3x1字符串} {0x0 double} {0x0 double} {0x0 double}”““鲸鱼类型”“Moanregions”“ROI”“逻辑”{[“n / a”] {0x0 double} {0x0 double} {0x0 double} {0x0 double}“”呻吟的区域“,呻吟声”“roilregions”“ROI”“逻辑”逻辑“{[”n / a“]} {0x0 double} {0x0 double} {0x0 double} {1x1 signallabeldefefinition}”“arrills发生的区域”

加载数据中的信号对应于两只蓝鲸的歌声。设定“WhalType”两个信号的值。

setLabelValue (lss 1“WhalType”'蓝色');setlabelvalue(lss,2,“WhalType”'蓝色');

可视化“标签”财产。表中有新添加的“WhalType”两个信号的值。

lss.labels.
ans=2×3表WhaleType MoanRegions TrillRegions _________ ___________ ____________ Whale1 blue {0x2 table} {0x3 table} Whale2 blue {0x2 table} {0x3 table}

可视化区域标签

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

子图(2,1,1)图((0:长度(鲸鲸)-1)/ fs,whale1)ylabel('鲸鱼1') subplot(2,1,2) plot((0:length(whale2)-1)/Fs,whale2) ylabel('鲸鱼2'

图中包含2个轴。轴1包含类型线的对象。轴2包含类型线的对象。

呻吟地区是持续的低频哀号。

  • 鲸鱼呻吟声集中在7秒、12秒和17秒左右。

  • 鲸鱼有呻吟率为约3秒,7秒和16秒。

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

moanRegionsWhale1 = [6.1 7.7;11.4 - 13.1;16.5 - 18.1);mrsz1 = [size(moanRegionsWhale1,1) 1];setLabelValue (lss 1“MoanRegions”,moanregionswhale1,true(mrsz1));moanregionswhale2 = [2.5 3.5;5.8 8;15.4 16.7];MRSZ2 = [大小(MoanRegionsWhale2,1)1];setlabelvalue(lss,2,“MoanRegions”,moanregionswhale2,true(mrsz2));

颤音地区默默地有明显的声音爆发。

  • 鲸鱼在大约2秒内速降了速降。

  • 鲸鱼以12秒为中心的颤音。

将Trill区域添加到标记的集合。

trillRegionWhale1 = [1.4 3.1];trsz1 = [size(trillRegionWhale1,1) 1];setLabelValue (lss 1“TrillRegions”,trillregionwhale1,true(trsz1));trillregionwhale2 = [11.1 13];trsz2 = [size(trillregionwhale1,1)1];setlabelvalue(lss,2,“TrillRegions”,trillRegionWhale2,true(trsz2));

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

MR1 = GetLabelvalues(LSS,1,“MoanRegions”);mr1。值=分类(repmat (“呻吟”mrsz1));tr1 = getLabelValues (lss 1“TrillRegions”); tr1.Value=分类(repmat(“颤音”trsz1));msk1 = signalMask ([mr1; tr1],“采样器”Fs);次要情节(2,1,1)plotsigroi msk1, whale1 ylabel ('鲸鱼1')举行mr2 = getLabelValues (lss 2“MoanRegions”);mr2。值=分类(repmat (“呻吟”,mrsz2);tr2=GetLabelValue(lss,2,“TrillRegions”);tr2。值=分类(repmat (“颤音”,trsz2));MSK2 =信号掩模([MR2; TR2],“采样器”Fs);次要情节(2,1,2)plotsigroi msk2, whale2 ylabel ('鲸鱼2')举行

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

可视化点标签

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

peakLocsWhale1=[1.5531.6261.7];Peakvalswale1=[0.211 0.254 0.211];setLabelValue(lss,1[“棘手”“颤音峰”],...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,[“棘手”“颤音峰”],...peakLocsWhale2,peakValsWhale2,'labelrowindex',1);子图(2,1,2)绘图(Peaklocswhale2,peakvalswhale2,'v')举行

图中包含2个轴。axis 1包含4个类型为line的对象。轴2包含4个类型线的物体。

探索标签值

使用查看标签值getLabelValues

getLabelvalues(LSS)
ans=2×3表WhaleType MoanRegions三区{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuul1蓝色{3x2表格}Whale2蓝色{3x2表格}1x3表格}

检索标记集的第一个成员的moan区域。

GetLabelValue(lss,1,“MoanRegions”
ans=3×2表roilimits值_________________ 6.1 7.7 {[1]} 11.4 13.1 {[1]} 16.5 18.1 {[1]}

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

(价值,valueWithSublabel) = getLabelValues (lss 1“TrillRegions”
值=1×2表Roilimits值__________ _____ 1.4 3.1 {[1]}
valueWithSublabel =1×3表Roilimits Value Sublabels Trillpeaks __________ _____________ 1.4 3.1 {[1]} {3x2表}

要检索sublabel中的值,请将标签名称作为双元数组表示。

getlabelvalues(lss,1,[“棘手”“颤音峰”])
ans=3×2表位置值{[0.2110]}1.626{[0.2540]}1.7{[0.2110]}

找到与集合的第二个成员对应的第三串峰值的值。

getLabelvalues(LSS,2,[“棘手”“颤音峰”],...'labelrowindex'1.“SublabelRowIndex”3,3)
ans=1×2表位置值{[0.1500]}

使用MATLAB®指定包含作为MAT文件的一组音频信号的路径。每个文件都包含一个信号变量和采样率。列出文件的名称。

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

创建指向指定文件夹的信号数据存储。将采样率变量名称设置为FS.,这对所有文件都是常见的。生成排除文件的数据存储的子集mtlb.mat. 使用subset datastore as the source for aLabeledSignalSet.对象。

sds = signalDatastore(文件夹,“samplerevariablename”“Fs”);sds =子集(sds ~ strcmp (nms,“mtlb.mat”)); lss=标签信号集(sds);

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

  • 为包含人声的信号定义一个逻辑属性标签。

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

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

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

vc = signalLabelDefinition (“语音”'labeltype''属性'...'labeldatatype''逻辑'“默认值”、假);mx = signalLabelDefinition (“最大”'labeltype'“点”...'labeldatatype'“数字”);rs = signalLabelDefinition (“ranroi”'labeltype'“投资回报率”...'labeldatatype'“绝对的”“类别”,[“roi”“其他”]); addLabelDefinitions(lss、[vc mx rs])

标记信号:

  • 标签“handel.mat”'笑声..就像有人类的声音一样。

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

  • 使用randROI函数生成多个长度区域N/ 10样品可以适合长度的信号N给定最小的分离N/6个区域间样本。标记他们的位置,并分配给ROI类别。

当标记点和区域时,将样本值转换为时间值。减去1以说明MATLAB®数组索引,并除以样本率。

kj = 1;Hasdata(SDS)[SIG,INFO] =读取(SDS);FS = INFO.SAMPLEDE;[〜,fn] = fileparts(info.filename);如果fn==“汉德尔”| | fn = =“笑”setlabelvalue(lss,kj,“语音”,真正的)结尾xm = find(iSlocalmax(SIG,“MaxNumExtrema”,1));setlabelvalue(lss,kj,“最大”,(xm-1)/fs,sig(xm))N=长度(sig);投资回报率=随机投资回报率(N,整数(N/10),整数(N/6));setLabelValue(lss,kj,“ranroi”,(rois-1)/ fs,repelem(“roi”,size(rois,1)) kj = kj+1;结尾

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

countLabelValues (lss“语音”
ans=2×3表语音计数百分比_____ _____ _______ _ _____ false 4 66.667 TRUE 2 33.333

确认两个信号的最大振幅为1。

countLabelValues (lss“最大”
ans=5×4表最大计数百分比MemberCount ______________________ ____________ ___________ 0.80000000000000004441 1 16.667 1 0.89113331915798421612 1 16.667 1 0.94730769230769229505 1 16.667 11 2 33.333 2 1.0575668990330560071 1 16.667 1

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

countLabelValues (lss“ranroi”
ans=2×4表RanROI计数百分比成员计数uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

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

[SD,LD] = CreateDataStore(LSS,[“语音”“ranroi”“最大”]);

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

  • 使用信号屏蔽对象突出蓝色的兴趣区域。

  • 绘制黄线以标记最大值的位置。

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

Tiledlayout.流动hasdata(SD)[SG,NF] =读取(SD);LBLS =读(LD);nextdile msk = signalmask(lbls {:}。ranroi {:},“采样器”,nf.取样器);plotsigroi(msk、sg)颜色条Xlabel('')[x,y] = meshgrid(lbls {:}。最大{:}。位置,ylim);抓住情节(X, Y,“线宽”2,'颜色'“# EDB120”)举行如果lbls {:}。声音{:} ylabel(“表示”'颜色''#d95319'结尾结尾

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

函数roilims=randROI(N,wid,sep)num=楼层((N+sep)/(wid+sep));hq=历史计数(随机数(num+1,1,N-num*wid-(num-1)*sep),(1:num+2)-1/2);roilims=(1+(0:num-1)*(wid+sep)+cumsum(hq(1:num))”+[0-wid-1];结尾

也可以看看

应用程序

对象

在R2018B中介绍