主要内容

labeledSignalSet

创建标记信号集

描述

使用labeledSignalSet将标记信号与标记定义一起存储。创建信号标签定义使用signalLabelDefinition

创建

描述

lss= labeledSignalSet创建一个空的标记信号集。使用同时向集合中添加信号。使用addLabelDefinitions向集合中添加标签定义。

例子

lss= labeledSignalSet (src为输入数据源创建标记信号集src.使用addLabelDefinitions向集合中添加标签定义。

lss= labeledSignalSet (srclbldefs为输入数据源创建标记信号集src使用信号标签定义lbldefs.使用signalLabelDefinition创建信号标签定义。

lss= labeledSignalSet (srclbldefs“MemberNames”,mnames为输入数据源创建标记信号集src并指定集合成员的名称。使用setMemberNames修改成员名。lbldefs是可选的。

例子

lss= labeledSignalSet (srclbldefs名称,值属性使用名称-值参数。您可以指定多个名称-值参数。将每个属性名用引号括起来。lbldefs是可选的。

输入参数

全部展开

输入数据源,指定为矩阵,单元格数组,时间表,一个signalDatastore对象,或audioDatastore(音频工具箱)对象。src隐式指定集合成员的数量,每个成员中的信号数量,以及每个信号中的数据。

例子:randn(3) 10randn(17日9)}有两个成员。第一个成员包含三个10个样本的信号。第二个成员包含9个17样本信号。

例子:{{randn(10,1)}, {randn(1) 17randn(27日1)}}有两个成员。第一个成员包含一个10个样本的信号。第二成员包含一个17样本信号和一个27样本信号。

例子:{{时间表(1:10) ',randn(3) 10),时间表(1:7)”,randn(2) 7)}, {时间表(1:3)”,randn(1))}}有两个成员。第一个成员包含以1hz采样10秒的三个信号和以1hz采样7秒的两个信号。第二个元件包含一个以1hz采样3秒的信号。

例子:signalDatastore指向文件的对象

使用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,它与其他文件的不同之处在于没有调用信号变量y

sds = signalDatastore“SampleRateVariableName”“Fs”);SDSS =子集(sds,~strcmp(nms,“mtlb.mat”));

类的源使用子集数据存储labeledSignalSet对象。

lss = labeledSignalSet(sdss)
lss = labeledSignalSet with properties:来源:[1x1 signalDatastore] NumMembers: 6 TimeInformation: "inherent" Labels: [6x0 table]描述:""使用labelDefinitionsHierarchy查看标签和子标签的列表。使用setLabelValue向集合中添加数据。

标签定义,指定为的向量signalLabelDefinition对象。

成员名称,指定为字符向量、字符串标量、字符向量的单元格数组或字符串数组。

例子:labeledSignalSet({randn(100,1) randn(10,1)},'MemberNames',{'llama' '羊驼'})指定一组具有两个成员的随机信号,“骆驼”而且“羊驼”

属性

全部展开

有标签的信号集描述,指定为字符向量或字符串标量。

例子:“描述”,“按性别和年龄对患者进行睡眠测试”

数据类型:字符|字符串

此属性是只读的。

采样率值,用正标量或向量表示。此属性仅在数据源不包含固有时间信息时有效。

  • SampleRate转换为正数值标量,以指定标记集中所有信号的相同采样率。

  • SampleRate到一个向量,以指定标记集的每个成员都有以相同速率采样的信号,但样本速率因成员而异。向量的元素个数必须等于集合的成员个数。如果集合中的一个成员具有不同采样率的信号,则使用时间表指定采样率。

例子:“SampleRate”,[1 e2 e3]指定集合的第一个成员中的信号以100 Hz的速率采样,第二个成员中的信号以1 kHz的速率采样。

此属性是只读的。

采样时间值,指定为正标量,向量,a持续时间标量,或者持续时间向量。此属性仅在数据源不包含固有时间信息时有效。

  • SampleTime数值或持续时间标量,为标记集中的所有信号指定相同的采样时间。

  • SampleTime数值或持续时间向量,以指定标记集的每个成员的信号在样本之间具有相同的时间间隔,但间隔因成员而异。向量的元素个数必须等于集合的成员个数。如果集合中的一个成员具有不同采样时间的信号,则使用时间表指定采样时间。

例子:“SampleTime”,秒([1依照1 e - 3])指定集合的第一个成员中的信号在样本之间有0.01秒的间隔,而第二个成员中的信号在样本之间有1毫秒的间隔。

此属性是只读的。

时间值,指定为向量,a持续时间向量、矩阵或单元格数组。此属性仅在数据源不包含固有时间信息时有效。时间值必须是唯一的,并且是递增的。

  • 时间价值数值或持续时间向量为标记集中的所有信号指定相同的时间值。向量的长度必须与集合中所有信号的长度相同。

  • 时间价值数值或持续时间矩阵或单元格数组,以指定标记集的每个成员具有具有相同时间值的信号,但时间值因成员而异。

    • 如果时间价值是一个矩阵,那么它的列数必须等于集合的成员数。集合中所有信号的长度必须等于矩阵的行数。

    • 如果时间价值是单元格数组,则它必须包含与集合成员数目相等的若干向量。成员中的所有信号的长度必须等于单元格数组中相应向量的元素数。

如果集合中的一个成员具有不同时间值的信号,则使用时间表指定时间值。

例子:“时间价值”,[1:1000;0:1/500:2-1/500]指定在集合的第一个成员中的信号以1hz采样1000秒。第二个成员中的信号以500hz采样2秒。

例子:“时间价值”,秒([1:1000;0:1/500:2-1/500]”)指定在集合的第一个成员中的信号以1hz采样1000秒。第二个成员中的信号以500hz采样2秒。

例子:“时间价值”,{1:1000,0:1/500:2-1/500}指定在集合的第一个成员中的信号以1hz采样1000秒。第二个成员中的信号以500hz采样2秒。

例子:“时间价值”,{秒(1:1000),秒(0:1/500:2-1/500)}指定在集合的第一个成员中的信号以1hz采样1000秒。第二个成员中的信号以500hz采样2秒。

此属性是只读的。

集合中的成员数,指定为正整数。

此属性是只读的。

标签表,指定为MATLAB®表格的每个变量标签对应于为集合定义的标签。每行标签对应于数据源的一个成员。的行名标签是成员名。

数据类型:表格

源的时间信息,指定为以下之一:

  • “没有”—源中的信号没有时间信息。

  • “sampleRate”—源中的信号按照指定的速率采样。

  • “sampleTime”—源中的信号之间有指定的采样时间间隔。

  • 的时间价值—源中的信号有一个时间值,对应于每个采样。

  • “固有的”—源信号中包含固有的时间信息。MATLAB时间表就是这种信号的一个例子。

数据类型:字符|字符串

此属性是只读的。

标记信号集的数据源,指定为矩阵、时间表、单元数组或音频数据存储。

  • 如果是数值矩阵,则标记的信号集有一个成员,该成员包含与矩阵列数相等的信号数。

    例子:3) labeledSignalSet (randn(10日)有一个成员包含三个10样本信号。

  • 如果是矩阵的单元格数组,则标记的信号集的成员数等于单元格数组中的矩阵数。每个成员包含的信号数等于对应矩阵的列数。

    例子:labeledSignalSet ({randn (10, 3), randn(17日9)})有两个成员。第一个成员包含三个10个样本的信号。第二个成员包含9个17样本信号。

  • 如果是单元格数组,并且该单元格数组的每个元素都是数值向量的单元格数组,则标记的信号集具有等于该单元格数组元素数量的成员。成员中的每个信号可以有任意长度。

    例子:labeledSignalSet ({{randn (10,1)}, {randn(17日1),randn(27日1)}})有两个成员。第一个成员包含一个10个样本的信号。第二成员包含一个17样本信号和一个27样本信号。

  • 如果是包含包含数值变量的时间表,则标记的信号集具有一个成员,该成员包含与变量数量相等的信号数量。时间表的时间值必须为类型持续时间,独特的,不断增长的。

    例子:labeledSignalSet(时间表(秒(1:10)”,randn (10, 3)))有一个成员包含三个以1hz采样10秒的信号。

  • 如果是一个时间表的单元格数组,并且每个时间表都有任意数量的数值变量,那么标记的信号集的成员数量等于时间表的数量。每个成员包含的信号数量等于相应时间表中的变量数量。

    例子:labeledSignalSet({时间表(秒(1:10),randn(10, 3)),时间表(秒(1:5)',randn (13))})有两个成员。第一个成员包含以1hz采样10秒的三个信号。第二个成员包含以1hz采样5秒的13个信号。

  • 如果是一个单元格数组,并且该单元格数组的每个元素都是一个时间表单元格数组,则标记的信号集具有等于单元格数组元素数量的成员。每个成员可以有任意数量的时间表,成员中的每个时间表可以有任意数量的变量。

    例子:labeledSignalSet({{时间表(秒(1:10)”,randn(10, 3)),时间表(秒(1:7)”,randn(7, 2))},{时间表(秒(1:3),randn (3,1))}})有两个成员。第一个成员包含以1hz采样10秒的三个信号和以1hz采样7秒的两个信号。第二个元件包含一个以1hz采样3秒的信号。

  • 如果输入数据源,src为音频数据存储,则标记信号集的成员数等于该数据存储所指向的文件数。的属性包含包含文件名的字符向量的单元格数组。每个成员包含读取相应数据存储文件返回的所有信号。

对象的功能

addLabelDefinitions 为标记信号集添加标记定义
同时 向标记的信号集添加成员
countLabelValues 计算标签值
createDatastores 创建指向信号和标签数据的数据存储
createFeatureData 创建特征表或矩阵和响应向量
editLabelDefinition 编辑标签定义属性
getAlternateFileSystemRoots 当标记信号集的数据源是一个数据存储时,获取备用文件系统根
getLabelDefinitions 获取标签信号集中的标签定义
getLabeledSignal 从标记的信号集中得到标记的信号
getLabelIndices 获取标签索引,指向标记信号集中的标签定义
getLabelNames 获取标签信号集中的标签名称
getLabelValues 从标记的信号集中获取标记值
getMemberNames 在标记的信号集中获取成员名
getSignal 从标记的信号集中获取信号
获取标签表的顶部行
labelDefinitionsHierarchy 获取标签和子标签名的分层列表
labelDefinitionsSummary 获取信号标签定义的汇总表
合并 合并两个或多个标记的信号集
removeLabelDefinition 从标记信号集中移除标记定义
removeMembers 从标记的信号集中移除成员
removePointValue 从点标签中删除行
removeRegionValue 从ROI标签中删除行
resetLabelValues 将标签重置为默认值
setAlternateFileSystemRoots 当标记信号集的数据源为数据存储时,设置备用文件系统根
setLabelValue 在标记信号集中设置标记值
setMemberNames 在标记信号集中设置成员名
子集 得到带有成员子集的新标记信号集

例子

全部折叠

考虑一组鲸鱼录音。记录的鲸鱼声音包括颤音和呻吟。颤音听起来像一连串的咔哒声。呻吟这是一种低频叫声,类似于轮船的喇叭声。你想要观察每个信号并标记它来识别鲸鱼的类型,颤音区域和呻吟区域。对于每个颤音区域,还需要标记高于某个阈值的信号峰值。

信号标签定义

定义一个属性标签来存储鲸鱼类型。可能的分类是蓝鲸、座头鲸和白鲸。

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》

图中包含2个轴对象。Axes对象1包含一个line类型的对象。坐标轴对象2包含一个line类型的对象。

呻吟区是持续的低频哀号。

  • 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》)举行

图中包含2个轴对象。Axes对象1包含3个line类型的对象。坐标轴对象2包含3个line类型的对象。

可视化点标签

为每个颤音区域标注三个峰值。对于点标签,指定点位置和标签值。在本例中,点位置以秒为单位。

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”)举行

图中包含2个轴对象。Axes对象1包含4个line类型的对象。坐标轴对象2包含4个line类型的对象。

探索标签值

探索使用的标签值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对象以蓝色突出显示感兴趣的区域。

  • 用黄线标出极大值的位置。

  • 在包含人声的信号中添加一个红色轴标签。

tiledlayoutHasdata (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”结束结束

图中包含6个轴对象。坐标轴对象1包含4个line、constantline类型的对象。坐标轴对象2包含4个line、constantline类型的对象。坐标轴对象3包含4个line、constantline类型的对象。坐标轴对象4包含4个line、constantline类型的对象。坐标轴对象5包含4个line、constantline类型的对象。坐标轴对象6包含4个line、constantline类型的对象。

函数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中引入

另请参阅

应用程序

对象