主要内容

signallabledefinition.

创建信号标签定义

描述

signallabledefinition.为数据集创建信号标签定义。标签可以对应于属性,地区或感兴趣点。使用矢量signallabledefinition.对象创建一个LabeledSignalSet.

创建

描述

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

例子

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

输入参数

展开全部

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

数据类型:char|细绳

特性

展开全部

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

数据类型:char|细绳

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

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

  • 'roi'- 定义感兴趣区域的信号特征。

  • '观点'- 定义感兴趣点的信号特征。

数据类型:char|细绳

数据类型的标签,指定为'逻辑''分类''数字''细绳''桌子', 或者'时间表'。使用类别当此属性设置为时,属性要指定类别数组'分类'

数据类型:char|细绳

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

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

数据类型:char|细绳

数据类型的ROI限制,指定为'双倍的'或者'期间'。此属性仅适用于什么时候LabelType.设定为'roi'

数据类型:char|细绳

点位置的数据类型,指定为'双倍的'或者'期间'。此属性仅适用于什么时候LabelType.设定为'观点'

数据类型:char|细绳

验证函数,指定为函数句柄,并在设置标签值时使用LabeledSignalSet.目的。此属性仅适用于什么时候Labeldatatype.设定为'分类''逻辑''数字''桌子', 或者'时间表'。如果未指定,则该函数仅检查其输入值是否为正确的数据类型。如果Labeldatatype.设定为'分类',该功能检查输入是使用的值之一类别。该函数取得输入值并返回真的如果值有效和错误的如果值无效。

例子:'Labeldatatype.','数字','默认值',1,'验证功能',@(x)x <2

数据类型:function_handle.

标签的默认值,指定为使用的类型的值指定Labeldatatype.。如果Labeldatatype.设定为'分类', 然后默认值必须是使用指定的值之一类别

例子:'Labeldatatype.','分类','类别',[“苹果”,“橙色”],'默认值',“苹果”

数据类型:char|双倍的|逻辑|细绳|桌子

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

例子:'描述','患者睡着了'

数据类型:char|细绳

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

例子:'标签','peak1'

数据类型:char|细绳

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

笔记

Sublabels不能有子标签。

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

对象功能

LANENDEFINITIONSHIERARAPT. 获取标签和子标签名称的分层列表
LabELDefinitionSsummary. 获取信号标签定义的摘要表

例子

全部收缩

考虑一套鲸鱼录音。记录的鲸鱼声音包括颤音和呻吟声。颤音声音像点击次数。呻吟低频哭泣与船角的声音类似。您想查看每个信号并将其标记以识别鲸鲸类型,颤音区域和呻吟区域。对于每个TRILL区域,您还需要标记高于某个阈值的信号峰值。

信号标签定义

定义属性标签以存储鲸狗类型。可能的类别是蓝鲸,驼背鲸和白鲸。

dwhaletype = signallabeldefinition('whaletype'......'labeltype''属性'......'labeldatatype''分类'......'类别',[“蓝色的”“驼背”“白色的”],......'描述''鲸型');

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

DMOANS = SignallableDefinition('Moanregions'......'labeltype''roi'......'labeldatatype''逻辑'......'描述'呻吟的地区发生了“);DTRILLS = SIGNALLABELDEFINITION('trillregions'......'labeltype''roi'......'labeldatatype''逻辑'......'描述''发生箱子的地区');

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

dtrillpeaks = signallabeldefinition('trillpeaks'......'labeltype''观点'......'labeldatatype''数字'......'描述''trill山峰');dtrills.sublabels = dtrillpeaks;

标记信号集

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

加载标签为什么lbldefs = [dwhaletype dmoans dtrills];lss = labeledsignalset({whale1 whale2},lbldefs,'成员名',{'鲸鱼1''鲸鱼2'},......'采样率',fs,'描述''表征波浪歌曲区域');

使用标签层次结构和标签属性使用LANENDEFINITIONSHIERARAPT.LabELDefinitionSsummary.

LANENDEFINITIONSHIERARCHY(LSS)
ans ='whaletype sublabels:[] moanregions sublabels:[] Trillregions sublabels:trillpeaks'
LANENDEFININGSSSUMMARY(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发生的区域”

加载数据中的信号对应于两个蓝色鲸鱼的歌曲。设定'whaletype'两个信号的值。

setlabelvalue(lss,1,'whaletype''蓝色的');setlabelvalue(lss,2,'whaletype''蓝色的');

可视化'标签'财产。表格有新添加的'whaletype'两个信号的值。

lss.labels.
ans =.2×3表whaletype moanregions trillregions _________ _________________________鲸鱼1蓝色{0x2表} {0x3表} whale2蓝色{0x2表} {0x3表}

可视化区域标签

可视化鲸鲨以识别棘手和呻吟的地区。

子图(2,1,1)图((0:长度(鲸鲸)-1)/ fs,whale1)ylabel('鲸鱼1')子图(2,1,2)图((0:长度(鲸鲸2)-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 = [尺寸(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));

创建一个signermask.每个鲸曲歌曲的对象并使用它来可视化和标记不同的区域。为更好的可视化,将标签值从逻辑到分类更改。

MR1 = GetLabelvalues(LSS,1,'Moanregions');MR1.Value =分类(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.VALUE =分类(REPMAT(“呻吟”,MRSZ2));tr2 = getlabelvalues(lss,2,'trillregions');tr2.value =分类(repmat(“颤音”,trsz2));MSK2 =信号掩模([MR2; TR2],'采样率',fs);子图(2,1,2)Plotsigroi(MSK2,Whale2)Ylabel('鲸鱼2') 抓住

图包含2个轴。轴1包含3个类型的线。轴2包含3个类型的线。

可视化点标签

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

peaklocswhale1 = [1.553 1.626 1.7];peakvalswhale1 = [0.211 0.254 0.211];setlabelvalue(lss,1,[“棘手”“trillpeaks”],......peaklocswhale1,papvalswhale1,'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,[“棘手”“trillpeaks”],......peaklocswhale2,peakvalswhale2,'labelrowindex',1);子图(2,1,2)绘图(Peaklocswhale2,peakvalswhale2,'v') 抓住离开

图包含2个轴。轴1包含4个类型的线。轴2包含4个类型线的物体。

探索标签值

使用探索标签值getLabelvalues.

getLabelvalues(LSS)
ans =.2×3表whaletype moanregions trillregions _________ ___________ ____________鲸鱼1蓝色{3x2表} {1x3表} whale2蓝色{3x2表} {1x3表}

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

GetLabelvalues(LSS,1,'Moanregions'
ans =.3×2表roilimits值_________________ 6.1 7.7 {[1]} 11.4 13.1 {[1]} 16.5 18.1 {[1]}

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

[value,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,[“棘手”“trillpeaks”])
ans =.3×2表位置值________ __________ 1.553 {[0.2110]} 1.626 {[0.2540]} 1.7 {[0.2110]}

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

getlabelvalues(lss,2,[“棘手”“trillpeaks”],......'labelrowindex',1,'sublabelrowindex'3,3)
ans =.1×2表位置值________ __________ 11.437 {[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。使用子集数据存储作为源LabeledSignalSet.目的。

sds = signaldataStore(文件夹,“samplerevariablename”“FS”);SDS =子集(SDS,〜StrcMP(NMS,“mtlb.mat”));lss = labeledsignalset(SDS);

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

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

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

  • 定义一个分类的兴趣区域(ROI)标签,以挑选每个信号的非凸起,均匀长度的随机区域。

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

vc = signallabeldefinition(“语音”'labeltype''属性'......'labeldatatype''逻辑''默认值',错误的);mx = signallabeldefinition(“最大”'labeltype''观点'......'labeldatatype''数字');rs = signallabeldefinition(“ranroi”'labeltype''roi'......'labeldatatype''分类''类别',[“roi”“其他”]);addLabeldefinitions(LSS,[VC MX RS])

标记信号:

  • 标签'handel.mat''笑声..有人类的声音。

  • 使用islocalmax.功能要找到每个信号的最大值。标记其位置和值。

  • 使用兰德罗函数生成多个长度区域N/ 10样品可以适合长度的信号N鉴于最低分离N/ 6区之间的样品。标记他们的位置并将它们分配给ROI.类别。

当标记点和区域时,将样本值转换为时间值。减去1以考虑Matlab®Arst索引并划分采样率。

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);ROIS = RANDROI(n,圆形(n / 10),圆形(n / 6));setlabelvalue(lss,kj,“ranroi”,(rois-1)/ fs,repelem(“roi”,尺寸(rois,1)))kj = kj + 1;结尾

验证只有两个信号包含声音。

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

验证两个信号是否具有1的最大幅度。

countlabelvalues(lss,“最大”
ans =.5×4表最大计数百分比成员___________________________________________________________________________66711/016.6671/016.66711

验证每个信号是否有四个非目的的随机区域。

countlabelvalues(lss,“ranroi”
ans =.2×4表Ranroi计数百分比成员______ _____ ___________________________________________其他0 0 0

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

  • SignalDataStore.目的SD.包含信号数据。

  • ArrayDataStore.目的LD.包含标签信息。指定要包含与您创建的所有标签对应的信息。

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

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

  • 用一个signermask.对象突出蓝色的兴趣区域。

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

  • 将红色轴标签添加到包含人类声音的信号。

Tiledlayout.尽管hasdata(SD)[SG,NF] =读取(SD);LBLS =读(LD);nextdile msk = signalmask(lbls {:}。ranroi {:},'采样率',NF.Samplerate);Plotsigroi(msk,sg)颜色栏离开Xlabel('')[x,y] = meshgrid(lbls {:}。最大{:}。位置,ylim);抓住绘图(x,y,'行宽'2,'颜色''#edb120') 抓住离开如果lbls {:}。声音{:} ylabel('浊音''颜色''#d95319'结尾结尾

图包含6个轴。轴1包含4个类型的线。轴2包含4个类型线的物体。轴3包含4个类型的类型。轴4包含4个类型的线。轴5包含4个类型的线。轴6包含4个类型的线。

功能Roilims = Randroi(n,wid,sep)num =地板((n + sep)/(wid + sep));HQ = histcounts(RANDI(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中介绍