signalLabelDefinition
创建信号标签定义
描述
使用signalLabelDefinition
为数据集创建信号标签定义。标签可以对应于属性、区域或感兴趣的点。使用矢量signalLabelDefinition
对象来创建labeledSignalSet
.
创建
描述
输入参数
的名字
- - - - - -标签名称
特征向量|字符串标量
标签名称,指定为字符向量或字符串标量。
数据类型:字符
|字符串
属性
的名字
- - - - - -标签名称
特征向量|字符串标量
标号的名称,指定为字符向量或字符串标量。
数据类型:字符
|字符串
LabelType
- - - - - -标签类型
“属性”
(默认)|“投资回报”
|“点”
|“attributeFeature”
|“roiFeature”
标签类型,指定为下列之一:
“属性”
-定义信号特征。“投资回报”
-定义感兴趣区域的信号特征。“点”
-定义兴趣点上的信号特征。“attributeFeature”
—定义与特征对应的信号特征。“roiFeature”
-在与特征相对应的感兴趣区域上定义信号特征。
数据类型:字符
|字符串
LabelDataType
- - - - - -标签数据类型
“逻辑”
(默认)|“分类”
|“数字”
|“字符串”
|“表”
|“时间表”
标签数据类型,指定为“逻辑”
,“分类”
,“数字”
,“字符串”
,“表”
,或“时间表”
.当您将此属性设置为“分类”
,使用类别属性指定类别数组。对象不支持的时间表和表数据类型万博1manbetxattributeFeature
而且roiFeature
标签。
数据类型:字符
|字符串
类别
- - - - - -标签类别名称
字符串数组|字符向量的单元格数组
标记类别名称,指定为字符串数组或字符向量的单元格数组。数组必须有唯一的元素。属性仅适用于LabelDataType属性设置为“分类”
.
例子:LabelDataType = "绝对"类别=(“苹果”、“橙色”)
数据类型:字符
|字符串
ROILimitsDataType
- - - - - -ROI限制的数据类型
“替身”
(默认)|“持续时间”
ROI限制的数据类型,指定为任意一种“替身”
或“持续时间”
.此属性仅适用于LabelType设置为“投资回报”
.
数据类型:字符
|字符串
PointLocationsDataType
- - - - - -点位置的数据类型
“替身”
(默认)|“持续时间”
点位置的数据类型,指定为任意一种“替身”
或“持续时间”
.此属性仅适用于LabelType设置为“点”
.
数据类型:字符
|字符串
ValidationFunction
- - - - - -验证功能
函数处理
验证函数,指定为函数句柄,并在中设置标签值时使用labeledSignalSet
对象。此属性仅适用于LabelDataType设置为“分类”
,“逻辑”
,“数字”
,“表”
,或“时间表”
.如果未指定,该函数仅检查其输入值是否为正确的数据类型。如果LabelDataType设置为“分类”
,该函数检查输入是否是使用类别.该函数接受一个输入值并返回真正的
如果该值有效,则假
如果该值无效。
例子:LabelDataType
= "数字",DefaultValue
= 1,ValidationFunction
= @ (x) x < 2
数据类型:function_handle
DefaultValue
- - - - - -标签默认值
[]
(默认)|LabelDataType
价值
标签的默认值,指定为使用指定的类型的值LabelDataType.如果LabelDataType设置为“分类”
,然后DefaultValue必须是使用?指定的值之一类别.
例子:LabelDataType
= "绝对",类别
=(“苹果”、“橙色”),DefaultValue
= "苹果"
数据类型:字符
|双
|逻辑
|字符串
|表格
描述
- - - - - -标签描述
特征向量|字符串标量
标签描述,指定为字符向量或字符串标量。
例子:描述="病人睡着了"
数据类型:字符
|字符串
标签
- - - - - -标签标签标识符
特征向量|字符串标量
标签标签标识符,指定为字符向量或字符串标量。使用此属性可在更大的标签方案或公共标签集中标识相同的标签。
例子:标签= " Peak1 "
数据类型:字符
|字符串
Sublabels
- - - - - -子标签数组
信号标签定义对象
子标签数组,指定为信号标签定义对象。若要指定多个子标签,请将此属性设置为信号标签定义对象的向量。使用此属性可在父标签及其子标签之间创建关系。如果LabelType设置为“attributeFeature”
或“roiFeature”
,则此性质不适用。
请注意
子标签不能有子标签。
例子:Sublabels
= [signalLabelDefinition(“-”),signalLabelDefinition(“积极”)]
FrameSize
- - - - - -帧大小
数字标量
FrameOverlapLength
- - - - - -相邻帧的重叠长度
0
(默认)|数字标量
相邻帧的重叠长度,指定为数值标量。若要启用此属性,请设置LabelType来“roiFeature”
.你不能指定FrameOverlapLength
而且帧速率
同时进行。如果您没有指定FramerOverlapLength
,则对象假设重叠长度为零。
例子:FrameSize = 50, FrameOverlapLength = 5
数据类型:双
帧速率
- - - - - -帧率
0
(默认)|数字标量
帧速率,指定为数值标量。若要启用此属性,请设置LabelType来“roiFeature”
.你不能指定帧速率
而且FrameOverlapLength
同时进行。如果您没有指定帧速率
,则对象假设帧之间没有重叠。
例子:FrameSize = 50,帧速率= 45
数据类型:双
对象的功能
labelDefinitionsHierarchy |
获取标签和子标签名的分层列表 |
labelDefinitionsSummary |
获取信号标签定义的汇总表 |
例子
鲸鱼歌曲的标签定义
考虑一组鲸鱼录音。记录的鲸鱼声音包括颤音和呻吟。颤音听起来像一连串的咔哒声。呻吟这是一种低频叫声,类似于轮船的喇叭声。你想要观察每个信号并标记它来识别鲸鱼的类型,颤音区域和呻吟区域。对于每个颤音区域,还需要标记高于某个阈值的信号峰值。
信号标签定义
定义一个属性标签来存储鲸鱼类型。可能的分类是蓝鲸、座头鲸和白鲸。
dWhaleType = signalLabelDefinition(“WhaleType”,...“LabelType”,“属性”,...“LabelDataType”,“分类”,...“类别”, {“蓝”,“座头鲸”,“白色”},...“描述”,“鲸鱼类型”);
定义一个感兴趣区域(ROI)标签来捕获呻吟区域。定义另一个ROI标签以捕获颤音区域。
dMoans = signalLabelDefinition(“MoanRegions”,...“LabelType”,“投资回报”,...“LabelDataType”,“逻辑”,...“描述”,“呻吟发生的区域”);dTrills = signalLabelDefinition(“TrillRegions”,...“LabelType”,“投资回报”,...“LabelDataType”,“逻辑”,...“描述”,“颤音发生的区域”);
最后,定义一个点标签来捕获颤音峰值。属性的子标签dTrills
定义。
dTrillPeaks = signalLabelDefinition(“TrillPeaks”,...“LabelType”,“点”,...“LabelDataType”,“数字”,...“描述”,“颤音峰”);dTrills。子标签= dTrillPeaks;
标记信号集
创建一个labeledSignalSet
有鲸鱼信号和标签定义。添加标签值以识别鲸鱼的类型、呻吟和颤音区域以及颤音的峰值。
负载labelwhalesignalslbldefs = [dWhaleType dMoans dTrills];lss = labeledSignalSet({鲸鱼1鲸鱼2},lbldefs,“MemberNames”, {“Whale1”,“Whale2”},...“SampleRate”Fs,“描述”,“描绘鲸鱼歌唱区域的特征”);
可视化使用的标签层次结构和标签属性labelDefinitionsHierarchy
而且labelDefinitionsSummary
.
labelDefinitionsHierarchy (lss)
ans = 'WhaleType subblabels: [] MoanRegions subblabels: [] TrillRegions subblabels: TrillPeaks '
labelDefinitionsSummary (lss)
ans =3×9表LabelName LabelType LabelDataType类别ValidationFunction DefaultValue Sublabels标签描述 ______________ ___________ _____________ ____________ __________________ ____________ ___________________________ ___ ____________________________ " WhaleType”“属性”“分类”{3 x1字符串}{【“N / A”】}{0 x0双}{0 x0双}”“鲸鱼类型”“MoanRegions”“投资回报率”“逻辑”{[“N / A”]}{0 x0双}{0 x0双}{0 x0双}“呻吟”“地区发生“TrillRegions”“投资回报率”“逻辑”{["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 _________ ___________ ____________鲸鱼1蓝色{0x2表}{0x3表}鲸鱼2蓝色{0x2表}{0x3表}
可视化区域标签
想象鲸鱼的歌声来识别颤音和呻吟的区域。
subplot(2,1,1) plot((0:length(whale1)-1)/Fs,whale1) ylabel(“鲸鱼1”) subplot(2,1,2) plot((0:length(whale2)-1)/Fs,whale2) ylabel(《鲸鱼2》)
呻吟区是持续的低频哀号。
whale1
呻吟集中在7秒,12秒和17秒。whale2
呻吟集中在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真实(mrsz1));moanRegionsWhale2 = [2.5 3.5;5.8 8;15.4 - 16.7);mrsz2 = [size(moanRegionsWhale2,1) 1];setLabelValue (lss 2“MoanRegions”、moanRegionsWhale2真实(mrsz2));
颤音区有明显的声音爆发,间或有沉默。
whale1
有一个颤音中心约2秒。whale2
颤音集中在12秒左右。
将颤音区域添加到标记集。
trillRegionWhale1 = [1.4 3.1];trsz1 = [size(trillRegionWhale1,1) 1];setLabelValue (lss 1“TrillRegions”、trillRegionWhale1真实(trsz1));trillRegionWhale2 = [11.1 13];trsz2 = [size(trillRegionWhale1,1) 1];setLabelValue (lss 2“TrillRegions”、trillRegionWhale2真实(trsz2));
创建一个signalMask
对象为每个鲸鱼的歌曲,并使用它来可视化和标记不同的区域。为了更好地可视化,请将标签值从逻辑更改为分类。
mr1 = getLabelValues(lss,1,“MoanRegions”);mr1。Value = categorical(repmat(“呻吟”mrsz1));tr1 = getLabelValues(lss,1,“TrillRegions”);tr1。Value = categorical(repmat(“颤音”trsz1));msk1 = signalMask([mr1;tr1],“SampleRate”Fs);Subplot (2,1,1) plotsigroi(msk1,whale1) ylabel(“鲸鱼1”)举行在mr2 = getLabelValues(lss,2,“MoanRegions”);mr2。Value = categorical(repmat(“呻吟”mrsz2));tr2 = getLabelValues(lss,2,“TrillRegions”);tr2。Value = categorical(repmat(“颤音”trsz2));msk2 = signalMask([mr2;tr2],“SampleRate”Fs);Subplot (2,1,2) plotsigroi(msk2,whale2) ylabel(《鲸鱼2》)举行在
可视化点标签
为每个颤音区域标注三个峰值。对于点标签,指定点位置和标签值。在本例中,点位置以秒为单位。
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”)举行从
探索标签值
探索使用的标签值getLabelValues
.
getLabelValues (lss)
ans =2×3表WhaleType MoanRegions TrillRegions _________ ___________ ____________ Whale1蓝{3x2表}{1x3表}Whale2蓝{3x2表}{1x3表}
检索标记集合的第一个成员的呻吟区域。
getLabelValues (lss 1“MoanRegions”)
ans =3×2表ROILimits价值 ____________ _____ 11.4 - 13.1 6.1 - 7.7 {[1]} {[1]} 16.5 - 18.1 {[1]}
使用第二个输出参数列出标签的子标签。
[value, valuewithsubblabel] = getLabelValues(lss,1,“TrillRegions”)
值=1×2表ROILimits值__________ _____ 1.4 3.1 {[1]}
valueWithSublabel =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,“SublabelRowIndex”3)
ans =1×2表位置值 ________ __________ 11.437 {[0.1500]}
统计标签值并创建数据存储
使用MATLAB®指定包含在mat文件中的一组音频信号的路径。每个文件包含一个信号变量和一个采样率。列出文件的名称。
文件夹= 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 = signalDatastore“SampleRateVariableName”,“Fs”);SDS =子集(SDS,~strcmp)“mtlb.mat”));lss = labeledSignalSet(sds);
创建三个标签定义来标记信号:
为包含人声的信号定义一个为真逻辑属性标签。
定义一个数值点标签,标记每个信号最大值的位置和幅度。
定义一个分类感兴趣区域(ROI)标签,以挑选出每个信号的非重叠、均匀长度的随机区域。
将信号标签定义添加到标记信号集中。
vc = signalLabelDefinition(“声音”,“LabelType”,“属性”,...“LabelDataType”,“逻辑”,“DefaultValue”、假);mx = signalLabelDefinition(“最大”,“LabelType”,“点”,...“LabelDataType”,“数字”);rs =信号abeldefinition (“RanROI”,“LabelType”,“投资回报”,...“LabelDataType”,“分类”,“类别”,[“投资回报”“其他”]);addLabelDefinitions(lss,[vc mx rs])
标记信号:
标签
“handel.mat”
而且“laughter.mat”
就像拥有人类的声音。使用
islocalmax
函数求每个信号的最大值。标记它的位置和值。使用
randROI
函数生成尽可能多的长度区域N/10个样本,以适应信号的长度N给定最小的分离N/6个区域之间的样本。标记它们的位置并将它们分配给ROI
类别。
在标记点和区域时,将样本值转换为时间值。减去1以考虑MATLAB®数组索引,并除以采样率。
Kj = 1;而Hasdata (sds) [sig,info] = read(sds);fs = info.SampleRate;[~,fn] = fileparts(info.FileName);如果fn = =“汉德尔”| | fn = =“笑”setLabelValue (lss kj,“声音”,真正的)结束Xm = find(islocalmax(sig,“MaxNumExtrema”1));setLabelValue (lss kj,“最大”,(xm-1)/fs,sig(xm)) N = length(sig);rois = randROI(N,round(N/10),round(N/6));setLabelValue (lss kj,“RanROI”、(rois-1) / fs repelem (“投资回报”,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表Maximum Count Percent 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计数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 = read(ld);nexttile msk = signalMask(lbls{:}。RanROI {:},“SampleRate”, nf.SampleRate);plotsigroi colorbar (msk, sg)从包含(”)参照线(lbls {:} .Maximum {:} .Location,...“线宽”2,“颜色”,“# EDB120”)如果lbls{:}。声音{:}ylabel (“表示”,“颜色”,“# D95319”)结束结束
函数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中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。