创建信号标签定义
使用signalLabelDefinition
为数据集创建信号标签定义。标签可以对应属性、区域或感兴趣的点。使用向量signalLabelDefinition
对象来创建labeledSignalSet
。
名称
- - - - - -标签名称标号名称,指定为字符向量或字符串标量。
数据类型:字符
|一串
名称
- - - - - -标签的名称标号的名称,指定为字符向量或字符串标量。
数据类型:字符
|一串
唇形
- - - - - -类型的标签“属性”
(默认)|“投资回报率”
|“点”
标签类型,指定为下列之一:
“属性”
—定义信号特性。
“投资回报率”
-定义感兴趣区域的信号特征。
“点”
-定义感兴趣点的信号特征。
数据类型:字符
|一串
LabelDataType
- - - - - -标签数据类型“逻辑”
(默认)|“绝对的”
|“数字”
|“字符串”
|“表”
|“时间表”
标签的数据类型,指定为“逻辑”
,“绝对的”
,“数字”
,“字符串”
,“表”
,或“时间表”
.使用类别属性指定类别数组时,将此属性设置为“绝对的”
。
数据类型:字符
|一串
类别
- - - - - -标签类别名称标签类别名称,指定为字符串数组或字符向量的单元格数组。数组必须有唯一的元素。该属性仅在LabelDataType属性设置为“绝对的”
。
例子:“LabelDataType”、“分类”、“类别”,(“苹果”、“橙色”)
数据类型:字符
|一串
ROILimitsDataType
- - - - - -ROI限制的数据类型“双”
(默认)|“持续时间”
ROI限制的数据类型,指定为“双”
或“持续时间”
。此属性仅适用于以下情况:唇形被设置为“投资回报率”
。
数据类型:字符
|一串
PointLocationsDataType
- - - - - -点位置的数据类型“双”
(默认)|“持续时间”
点位置的数据类型,指定为“双”
或“持续时间”
。此属性仅适用于以下情况:唇形被设置为“点”
。
数据类型:字符
|一串
验证函数
- - - - - -验证功能参数中设置标号值时,指定为函数句柄并使用labeledSignalSet
对象。此属性仅适用于以下情况LabelDataType被设置为“绝对的”
,“逻辑”
,“数字”
,“表”
,或“时间表”
。如果未指定,则函数仅检查其输入值的数据类型是否正确。如果LabelDataType被设置为“绝对的”
时,该函数检查输入是否是使用类别。函数接受一个输入值并返回真正的
如果该值有效且假
如果该值无效。
例子:'
LabelDataType
”、“数字”、“DefaultValue
, 1,验证函数
”,@ (x) x < 2
数据类型:function_handle
DefaultValue
- - - - - -标签的默认值[]
(默认)|LabelDataType
价值标签的默认值,指定为使用LabelDataType如果LabelDataType被设置为“绝对的”
,然后DefaultValue必须是使用指定的值之一类别。
例子:'
LabelDataType
”、“分类”、“类别
”、“苹果”、“橙色”,“DefaultValue
”,“苹果”
数据类型:字符
|双重的
|逻辑
|一串
|表格
描述
- - - - - -标签描述标号描述,指定为字符向量或字符串标量。
例子:“描述”、“病人睡着了”
数据类型:字符
|一串
标签
- - - - - -标签标识符标签标记符,指定为字符向量或字符串标量。使用此属性可在较大的标签方案或公共标签集中标识相同的标签。
例子:“标签”,“Peak1”
数据类型:字符
|一串
Sublabels
- - - - - -一系列sublabels子标签数组,指定为信号标签定义对象。若要指定多个子标签,请将此属性设置为信号标签定义对象的向量。使用此属性可在父标签及其子标签之间创建关系。
请注意
子标签不能有子标签。
例子:'
Sublabels
”,[signalLabelDefinition(“-”),signalLabelDefinition(“积极”)]
labelDefinitionsHierarchy |
获取标签和子标签名称的分层列表 |
标签定义概述 |
获取信号标签定义的汇总表 |
想想一组鲸鱼的声音录音。记录下来的鲸鱼声音包括颤音和呻吟声。颤音听起来像是一连串的咔哒声。呻吟是类似于轮船喇叭声的低频叫声。你要观察每一个信号,并给它贴上标签,以识别鲸鱼的类型,颤音区和呻吟区。对于每个颤音区域,您还需要标记高于某个阈值的信号峰值。
信号标签定义
定义一个属性标签来存储鲸鱼类型。可能的分类是蓝鲸、座头鲸和白鲸。
dWhaleType=信号标签定义(“WhaleType”,...“LabelType”,“属性”,...“LabelDataType”,“绝对的”,...“类别”, {“蓝”,“座头鲸”,“白色”},...“描述”,“鲸鱼类型”);
定义一个感兴趣区域(ROI)标签来捕获抱怨区域。定义另一个ROI标签来捕获颤音区域。
dMoans = signalLabelDefinition (“MoanRegions”,...“LabelType”,“投资回报率”,...“LabelDataType”,“逻辑”,...“描述”,“发出呻吟声的区域”);dtrill=信号标签定义(“TrillRegions”,...“LabelType”,“投资回报率”,...“LabelDataType”,“逻辑”,...“描述”,“颤音出现的区域”);
最后,定义一个点标签来捕获颤音峰值。属性的子标签dTrills
定义。
dTrillPeaks = signalLabelDefinition (“颤音峰”,...“LabelType”,“点”,...“LabelDataType”,“数字”,...“描述”,“颤音峰”);dTrills.Sublabels=dtrillpeak;
标记信号集
创建一个labeledSignalSet
用鲸鱼信号和标签定义。添加标签值来识别鲸鱼类型,呻吟和颤音区域,以及颤音的峰值。
负载labelwhalesignalslbldefs=[dWhaleType dMoans DTRILL];lss=标签信号集({whale1 whale2},lbldefs,“MemberNames”, {“Whale1”,“Whale2”},...“采样器”Fs,“描述”,“描述鲸鱼的歌声区域”);
使用可视化标签层次结构和标签特性labelDefinitionsHierarchy
和标签定义概述
。
labelDefinitionsHierarchy (lss)
ans = 'WhaleType子标签:[]MoanRegions子标签:[]TrillRegions子标签:TrillPeaks '
labelDefinitionsSummary (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 _________ ___________ ____________ Whale1 blue {0x2 table} {0x3 table} Whale2 blue {0x2 table} {0x3 table}
可视化区域标签
想象鲸鱼的歌声来识别颤音和呻吟的区域。
次要情节(2,1,1)情节((0:长度(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,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 = signalMask ([mr2; tr2],“采样器”Fs);次要情节(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”,“颤音峰”},...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”,“颤音峰”},...peakLocsWhale2,peakValsWhale2,“LabelRowIndex”1);次要情节(2,1,2)情节(peakLocsWhale2 peakValsWhale2,“v”)举行从
探索标签值
使用查看标签值getLabelValues
。
getLabelValues (lss)
ans=2×3表WhaleType MoanRegions三区{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuul1蓝色{3x2表格}Whale2蓝色{3x2表格}1x3表格}
检索标记集的第一个成员的moan区域。
GetLabelValue(lss,1,“MoanRegions”)
ans=3×2表ROILimits价值 ____________ _____ 11.4 - 13.1 6.1 - 7.7 {[1]} {[1]} 16.5 - 18.1 {[1]}
使用第二个输出参数列出标签的子标签。
(价值,valueWithSublabel) = 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”,“颤音峰”})
ans=3×2表位置值{[0.2110]}1.626{[0.2540]}1.7{[0.2110]}
找出第三个颤音峰值对应于集合的第二个成员。
getLabelValues (lss 2 {“TrillRegions”,“颤音峰”},...“LabelRowIndex”1.“SublabelRowIndex”3)
ans=1×2表位置值{[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
.使用subset datastore as the source for alabeledSignalSet
对象。
sds = signalDatastore(文件夹,“SampleRateVariableName”,“Fs”);sds =子集(sds ~ strcmp (nms,“mtlb.mat”)); lss=标签信号集(sds);
创建三个标签定义来标记信号:
为包含人声的信号定义一个逻辑属性标签。
定义一个数字点标签,标记每个信号的最大位置和幅度。
定义一个分类感兴趣区域(ROI)标签,以挑出每个信号的非重叠、等长随机区域。
将信号标签定义添加到标记的信号集中。
vc = signalLabelDefinition (“声音”,“LabelType”,“属性”,...“LabelDataType”,“逻辑”,“默认值”、假);mx = signalLabelDefinition (“最大”,“LabelType”,“点”,...“LabelDataType”,“数字”);rs = signalLabelDefinition (“RanROI”,“LabelType”,“投资回报率”,...“LabelDataType”,“绝对的”,“类别”,[“投资回报”“其他”]);添加标签定义(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 =找到(islocalmax(团体,“MaxNumExtrema”1));setLabelValue (lss kj,“最大”,(xm-1)/fs,sig(xm))N=长度(sig);rois=随机ROI(N,圆形(N/10),圆形(N/6));setLabelValue(lss,kj,“RanROI”、(rois-1) / fs repelem (“投资回报”,size(rois,1)) kj = kj+1;结束
确认只有两个信号包含语音。
countLabelValues (lss“声音”)
ans=2×3表语音统计百分比_____ _____ _______假4 66.667真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
包含信号数据。
的arrayDatastore
对象ld
包含标签信息。指定要包含与所创建的所有标签对应的信息。
(sd, ld) = createDatastores (lss, (“声音”“RanROI”“最大”]);
使用数据存储中的信息绘制信号并显示它们的标签。
使用信号屏蔽
对象以蓝色高亮感兴趣的区域。
用黄线标出最大值的位置。
向包含人声的信号添加红色轴标签。
tiledlayout流而Hasdata (sd) [sg,nf] = read(sd); / /读取数据lbls =阅读(ld);nexttile msk = signalMask(lbls{:}。RanROI {:},“采样器”,nf.取样器);plotsigroi(msk、sg)颜色条从包含('')参照线(lbls {:} .Maximum {:} .Location,...“线宽”2,“颜色”,“# EDB120”)如果lbls{:}。声音{:}ylabel (“表示”,“颜色”,“# D95319”)结束结束
函数roilims=randROI(N,wid,sep)num=floor((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];结束
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。