您可以使用信号贴标签机执行自动标签任务。除了峰贴标签机,自动化的价值画廊的标签选项卡包含可用于自动标记信号的函数。
每个自定义自标签函数的第一行包含表单的定义语句
函数[labelVals, labelLocs] =外汇(x, t, parentLabelVal parentLabelLoc,变长度输入宗量)
第一个输入参数,x
,为输入信号。当编写函数时,期望x
是一个矩阵,其中每一列包含对应于一个通道的数据。如果渠道有不同的长度,那么期待x
列向量的单元格数组。
第二个输入参数,t
,存储时间值。当编写函数时,期望t
是一个矩阵,其中每一列包含信道对应的时间信息。如果渠道有不同的长度,那么期待t
列向量的单元格数组。
请注意
对于单通道成员,自定义自标签函数将数据和时间值作为双精度向量。
对于多通道成员,自定义自标签函数以矩阵或单元格数组形式获取数据和时间值。
自定义自标签函数将成员的所有通道作为输入,但它们不必对所有通道进行操作。您可以选择要在哪个通道上操作该功能。
第三个输入参数,parentLabelVal
,是与输出子标号关联的父标号值,并包含数字、逻辑或字符串标量。此参数仅用于自动标记子标签的函数。如果函数是父标签,则期望parentLabelVal
是空的。
第四个输入参数,parentLabelLoc
,包含:
当父标签为属性时为空向量
当父标签是ROI时,感兴趣区域(ROI)的两元素数字行向量将受到限制
当父标号为点时,表示点位置的数字标量
此参数仅用于自动标记子标签的函数。如果函数是父标签,则期望parentLabelLoc
是空的。
请注意
对于父标签,自标签函数对每个选定的成员进行操作。
对于子标签,自标签函数每次为每个选定的成员操作一个父标签实例。
使用变长度输入宗量
指定附加的输入参数。如果没有额外的输入参数,可以省略变长度输入宗量
.单击时出现的对话框中,以逗号分隔的有序列表的形式输入其他参数Auto-Label按钮。
第一个输出参数,labelVals
,包含标签值。labelVals
必须:
当输出标签为属性时,为数字、逻辑或字符串标量
当输出标签是roi或点时,具有数字、逻辑或字符串值的列向量
第二个输出参数,labelLocs
,包含标签位置。labelLocs
必须:
当输出标签为属性时为空向量
当输出标签为ROI时,ROI限制的两列矩阵
当输出标签是点时,由点位置组成的列向量
要实现算法,可以使用MATLAB中的任何函数®或从系统中安装的任何工具箱。
有关详细信息,请参见自动信号标记与自定义功能和使用外部API在音频信号中标记口语单词.
该函数计算信号的平均均方根值,并将该值作为数字属性标记为信号。如果一个成员有多个通道,该函数计算每个通道的RMS值并取平均值。通道可以有不同的长度。
函数[labelVals, labelLocs] = meanRMS (x, t, parentLabelVal parentLabelLoc,变长度输入宗量)%以均方根值作为属性的标签信号如果iscell(x) labelVals = mean(cellfun(@rms,x))其他的labelVals =意味着(rms (x));结束labelLocs = [];结束
这个函数找到信号的零交叉点,并将其标记为“上升”
对于积极的转变“下降”
负向的转变。
函数[labelVals, labelLocs] =转换(x, t, parentLabelVal parentLabelLoc,变长度输入宗量)%标记零交叉为“上升”或“下降”nchan =大小(x, 2);tt = t (: 1);labelVals =细胞(nchan, 1);labelLocs =细胞(nchan, 1);为kj = 1:nchan [rate,count,indices] = zerocrosrate (x,TransitionEdge=“上升”);Rloc = tt(indices == 1); / /索引rval = repmat (“上升”长度(rloc) 1);[率,计算,指数]= zerocrossrate (x, TransitionEdge =“下降”);Floc = tt(indices == 1);fval = repmat (“下降”长度(絮状物),1);labelLocs {kj} = (rloc;絮状物);labelVals {kj} = [rval; fval];结束labelVals =猫(1,labelVals {:});labelLocs = cell2mat (labelLocs);结束
这个逻辑函数将多通道信号的以下区域标记为true:
第一个通道的振幅是负的。
第三通道的振幅大于用户指定的值,mx
.如果不指定,mx
默认为0.1。
函数[labelVals, labelLocs] = greaterThan (x, t, parentLabelVal parentLabelLoc,变长度输入宗量)%标记第一个通道和第三个通道大于给定值的区域如果Nargin <5 mx = 0.1;其他的mx =变长度输入宗量{1};结束xr = x (: 1);xx = x (:, 3);tt = t (: 1);ss = signalMask(xr < 0 & xx >= mx);x = roimask (ss);labelLocs = tt (x.ROILimits);labelVals =逻辑(双(x.Value));结束
要添加自定义自标签功能,请单击自动化的价值Gallery,然后选择添加自定义函数.在对话框中,指定以下字段:
的名字—指定要添加的函数名。
描述-添加函数的简短描述和可选输入参数的描述。
标签类型—指定函数生成的标签类型。选择属性
(默认),ROI
,或点
.
请注意
基于标签类型你指定,信号贴标签机将函数放置在自动化的价值画廊。当您选择标签定义时,图库只启用那些可以与该定义类型一起使用的函数。
如果你已经写了一个函数,并且函数在当前文件夹或MATLAB路径中,信号贴标签机将其合并到图库中。如果你还没写函数,信号贴标签机在编辑器中打开空白模板。
控件可以在任何时候编辑函数、编辑函数描述或删除函数管理自定义功能选项自动化的价值画廊。
请注意
使用管理自定义功能选项只改变显示在自动化的价值画廊。如果要更改包含函数的文件中的描述,必须编辑该文件。