创建信号标签定义
使用signalLabelDefinition
为数据集创建信号标签定义。标签可以对应属性、区域或感兴趣的点。使用向量signalLabelDefinition
对象创建一个LabeledSignalSet.
.
名称
-标签名称标签名称,指定为字符向量或字符串标量。
数据类型:char
|一串
名称
-标签的名称标签名称,指定为字符向量或字符串标量。
数据类型:char
|一串
唇形
-标签类型'属性'
(默认)|“投资回报率”
|“点”
标签类型,指定为下列之一:
'属性'
—定义信号特性。
“投资回报率”
-定义感兴趣区域的信号特征。
“点”
- 定义感兴趣点的信号特征。
数据类型:char
|一串
LabelDataType
-标签数据类型'逻辑'
(默认)|“绝对的”
|“数字”
|“字符串”
|'桌子'
|'时间表'
数据类型的标签,指定为'逻辑'
那“绝对的”
那“数字”
那“字符串”
那'桌子'
或'时间表'
. 使用类别属性,以指定将此属性设置为时的类别数组“绝对的”
.
数据类型:char
|一串
类别
-标签类别名称标签类别名称,指定为字符串数组或字符向量的单元格数组。数组必须具有唯一的元素。此属性仅适用于LabelDataType属性设置为“绝对的”
.
例子:'LabeldAtype','分类','类别',[“Apple”,“橙色”]
数据类型:char
|一串
ROILimitsDataType
-ROI限制的数据类型“双”
(默认)|“持续时间”
ROI限制的数据类型,指定为“双”
或“持续时间”
. 此属性仅适用于以下情况:唇形被设定为“投资回报率”
.
数据类型:char
|一串
PointCocationsDatatype.
-点位置的数据类型“双”
(默认)|“持续时间”
点位置的数据类型,指定为“双”
或“持续时间”
. 此属性仅适用于以下情况:唇形被设定为“点”
.
数据类型:char
|一串
验证函数
-验证功能参数中设置标号值时,指定为函数句柄并使用LabeledSignalSet.
对象。此属性仅适用于以下情况LabelDataType被设定为“绝对的”
那'逻辑'
那“数字”
那'桌子'
或'时间表'
. 如果未指定,则函数仅检查其输入值是否为正确的数据类型。如果LabelDataType被设定为“绝对的”
,该功能检查输入是使用的值之一类别.该函数取得输入值并返回真正的
如果该值有效且错误的
如果该值无效。
例子:'
LabelDataType
','数字','DefaultValue
',1,'验证函数
',@(x)x <2
数据类型:function_handle.
DefaultValue
-标签的默认值[]
(默认)|LabelDataType
价值标签的默认值,指定为使用LabelDataType. 如果LabelDataType被设定为“绝对的”
, 然后DefaultValue必须是使用指定的值之一类别.
例子:'
LabelDataType
','分类','类别
',[“苹果”,“橙色”],'DefaultValue
”,“苹果”
数据类型:char
|双重的
|逻辑
|一串
|表格
描述
-标签描述标号描述,指定为字符向量或字符串标量。
例子:“描述”、“病人睡着了”
数据类型:char
|一串
标签
-标签标识符标签标记标识符,指定为字符向量或字符串标量。使用此属性可在更大的标签方案或公共标签集中标识相同的标签。
例子:'标签','peak1'
数据类型:char
|一串
Sublabels.
-一系列子标签子标签数组,指定为信号标签定义对象。要指定多个子标签,请将此属性设置为信号标签定义对象的向量。使用此属性可以在父标签与其子标签之间创建关系。
笔记
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')
呻吟地区是持续的低频哀号。
鲸鱼
呻吟声集中在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')举行在
可视化点标签
为每个颤音区域标记三个峰值。对于点标签,您可以指定点位置和标签值。在本例中,点的位置是以秒为单位的。
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')举行从
探索标签值
使用查看标签值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
包含信号数据。
这arrayDatastore
目的ld
包含标签信息。指定要包含与所创建的所有标签对应的信息。
[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')结尾结尾
函数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];结尾
你认为这是一条命令:
Pour exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne支万博1manbetx持pas Les命令MATLAB。
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。