创建信号标签定义
用Signallabeldefinition.
为数据集创建信号标签定义。标签可以对应于属性,地区或感兴趣点。使用矢量Signallabeldefinition.
对象来创建labeledSignalSet
.
的名字
- - - - - -标签名称标号名称,指定为字符向量或字符串标量。
数据类型:字符
|字符串
的名字
- - - - - -标签名称标号的名称,指定为字符向量或字符串标量。
数据类型:字符
|字符串
LabelType
- - - - - -类型的标签“属性”
(默认)|“投资回报”
|“点”
标签类型,指定为以下之一:
“属性”
- 定义信号特性。
“投资回报”
-定义感兴趣区域的信号特征。
“点”
-定义感兴趣点的信号特征。
数据类型:字符
|字符串
Labeldatatyp.
- - - - - -标签数据类型“逻辑”
(默认)|“分类”
|'数字'
|“字符串”
|“表”
|“时间表”
标签的数据类型,指定为“逻辑”
,“分类”
,'数字'
,“字符串”
,“表”
, 或者“时间表”
.使用类别当此属性设置为时,属性要指定类别数组“分类”
.
数据类型:字符
|字符串
类别
- - - - - -标签类别名称标签类别名称,指定为字符串数组或字符向量的单元格数组。数组必须有唯一的元素。该属性仅在Labeldatatyp.财产设置为“分类”
.
例子:“LabelDataType”、“分类”、“类别”,(“苹果”、“橙色”)
数据类型:字符
|字符串
roilimitsDatatype.
- - - - - -数据类型的ROI限制“双”
(默认)|“持续时间”
ROI限制的数据类型,指定为“双”
或者“持续时间”
.此属性仅适用于什么时候LabelType被设置为“投资回报”
.
数据类型:字符
|字符串
PointLocationsDataType
- - - - - -数据类型的点位置“双”
(默认)|“持续时间”
点位置的数据类型,指定为“双”
或者“持续时间”
.此属性仅适用于什么时候LabelType被设置为“点”
.
数据类型:字符
|字符串
ValidationFunction
- - - - - -验证功能验证函数,指定为函数句柄,并在设置标签值时使用labeledSignalSet
目的。此属性仅适用于什么时候Labeldatatyp.被设置为“分类”
,“逻辑”
,'数字'
,“表”
, 或者“时间表”
.如果未指定,该函数仅检查其输入值是否为正确的数据类型。如果Labeldatatyp.被设置为“分类”
时,该函数检查输入是否是使用类别.函数接受一个输入值并返回真的
如果值是有效的假
如果该值无效。
例子:'
Labeldatatyp.
”、“数字”、“默认值
, 1,ValidationFunction
”,@ (x) x < 2
数据类型:function_handle
默认值
- - - - - -标签默认值[]
(默认)|Labeldatatyp.
价值label的默认值,指定为使用Labeldatatyp..如果Labeldatatyp.被设置为“分类”
,然后默认值必须是使用类别.
例子:'
Labeldatatyp.
”、“分类”、“类别
”、“苹果”、“橙色”,“默认值
',“苹果”
数据类型:字符
|双
|逻辑
|字符串
|桌子
描述
- - - - - -标签描述标签描述,指定为字符向量或字符串标量。
例子:'描述','病人睡着了'
数据类型:字符
|字符串
标签
- - - - - -标签标记标识符标签标记符,指定为字符向量或字符串标量。使用此属性可在较大的标签方案或公共标签集中标识相同的标签。
例子:“标签”,“Peak1”
数据类型:字符
|字符串
Sublabels
- - - - - -一系列sublabels子标签数组,指定为信号标签定义对象。若要指定多个子标号,请将此属性设置为信号标号定义对象的向量。使用此属性可在父标签及其子标签之间创建关系。
请注意
子标签不能有子标签。
例子:'
Sublabels
”,[signalLabelDefinition(“-”),signalLabelDefinition(“积极”)]
LANENDEFINITIONSHIERARCHY |
获取标签和子造带名称的分层列表 |
labelDefinitionsSummary |
获取信号标签定义的摘要表 |
考虑一组鲸鱼录音。记录的鲸鱼声音包括颤音和呻吟声。颤音声音像点击次数。呻吟是类似于轮船喇叭声的低频叫声。你要观察每一个信号,并给它贴上标签,以识别鲸鱼的类型,颤音区和呻吟区。对于每个颤音区域,您还需要标记高于某个阈值的信号峰值。
信号标签定义
定义属性标签以存储鲸鲸类型。可能的类别是蓝鲸,驼背鲸和白鲸。
dWhaleType = signalLabelDefinition ('whaletype',...“LabelType”,“属性”,...“LabelDataType”,“分类”,...'类别',{“蓝”,'驼背',“白色”},...“描述”,“鲸鱼类型”);
定义兴趣区域(ROI)标签以捕获呻吟区域。定义另一个ROI标签以捕获颤音区域。
DMOANS = SignallableDefinition('moanregions',...“LabelType”,“投资回报”,...“LabelDataType”,“逻辑”,...“描述”,“发出呻吟声的区域”);dTrills = signalLabelDefinition ('trillregions',...“LabelType”,“投资回报”,...“LabelDataType”,“逻辑”,...“描述”,“颤音发生的区域”);
最后,定义一个点标签来捕获颤音峰值。属性的子标签DTRILLS.
定义。
dTrillPeaks = signalLabelDefinition (“TrillPeaks”,...“LabelType”,“点”,...“LabelDataType”,'数字',...“描述”,“颤音峰”);dTrills。Sublabels = dTrillPeaks;
标记信号设置
创建一个labeledSignalSet
鲸鱼信号和标签定义。添加标签值以识别鲸鱼类型,呻吟和颤音区域,以及棘手的峰值。
负载标签为什么lbldefs = [dWhaleType dMoans dTrills];lss = labeledSignalSet({whale1 whale2},lbldefs,'成员名',{“Whale1”,“Whale2”},...“SampleRate”Fs,“描述”,“描述鲸鱼的歌声区域”);
使用。可视化标签层次结构和标签属性LANENDEFINITIONSHIERARCHY
和labelDefinitionsSummary
.
LANENDEFINITIONSHIERARCHY(LSS)
ans = 'WhaleType子标签:[]MoanRegions子标签:[]TrillRegions子标签:TrillPeaks '
LANEDEFININGSSSUMMARY(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 _________ ___________ ____________鲸鲸{0x2表} {0x3表} whale2蓝色{0x2表} {0x3表}
可视化区域标签
可视化鲸鲨以识别棘手和呻吟的地区。
次要情节(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 = [尺寸(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 =分类(REPMAT(“呻吟”,MRSZ1));tr1 = getlabelvalues(lss,1,'trillregions');tr1。值=分类(repmat (“颤音”trsz1));msk1 = signalMask ([mr1; tr1],“SampleRate”,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 = signalMask ([mr2; tr2],“SampleRate”,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',“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表Whale1 blue {3x2 table} {1x3 table} Whale2 blue {3x2 table} {1x3 table}
为标记集的第一个成员检索呻吟区域。
getLabelValues (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',“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-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.
.使用子集数据存储作为源labeledSignalSet
目的。
SDS = SignalDataStore(文件夹,“SampleRateVariableName”,“FS”);SDS =子集(SDS,〜StrcMP(NMS,“mtlb.mat”));lss = labeledSignalSet (sds);
创建三个标签定义以标记信号:
定义一个逻辑属性标签,用于包含人类声音的信号。
定义一个数字点标签,标记每个信号的最大位置和幅度。
定义分类感兴趣区域(ROI)标签,以挑选出每个信号的非重叠、均匀长度的随机区域。
将信号标签定义添加到已标记的信号集。
vc = signallabeldefinition(“声音”,“LabelType”,“属性”,...“LabelDataType”,“逻辑”,“DefaultValue”,错误的);mx = signallabeldefinition(“最大值”,“LabelType”,“点”,...“LabelDataType”,'数字');rs = signalLabelDefinition (“RanROI”,“LabelType”,“投资回报”,...“LabelDataType”,“分类”,'类别',[“投资回报”“其他”]);(vc mx rs) addLabelDefinitions (lss)
标签的信号:
标签'handel.mat'
和“laughter.mat”
拥有人类的声音。
使用islocalmax
函数查找每个信号的最大值。标记它的位置和值。
使用randROI
函数生成尽可能多的长度区域N/10个样本,以适合一个长度的信号N鉴于最低分离N/地区之间的样品。标记他们的位置并将它们分配给ROI.
类别。
在标记点和区域时,将样本值转换为时间值。减去1以考虑Matlab®Arst索引并划分采样率。
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 = length(sig);roi = randROI (N (N / 10),圆(N / 6));setLabelValue (lss kj,“RanROI”、(rois-1) / fs repelem (“投资回报”,尺寸(rois,1)))kj = kj + 1;结束
确认只有两个信号包含声音。
countlabelvalues(lss,“声音”)
ans =2×3表语音统计百分比_____ _____ _______假4 66.667真2 33.333
验证两个信号是否具有1的最大幅度。
countlabelvalues(lss,“最大值”)
ans =5×4表最大计数百分比成员_________________________________________0.8911333157984/7671 1 16.6671/016.66711
验证每个信号是否有四个非目标随机区域。
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 =阅读(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];结束
您已经有了geänderte版本死亡Beispiels。Möchten您是谁? Änderungen öffnen?
您有一个连接到MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。Webbrowser unterstützen keine MATLAB-Befehle。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。