主要内容

zerocrossrate

讨论二阶导数过零率

描述

例子

= zerocrossrate (x的过零率x.如果x为矩阵,则该函数将每列作为单独的通道进行分析,并将过零率作为行向量返回,其中每个值对应一个通道。

例子

= zerocrossrate (TT返回MATLAB中存储的数据的过零率®时间表TT.如果TT包含多个通道,则该功能对每个通道进行独立分析。

例子

= zerocrossrate (___名称,值指定附加的名称-值参数。将此语法与以前语法中的任何输入参数一起使用。

例子

= zerocrossrate(___还返回传入的总交叉数

例子

指数= zerocrossrate(___还返回发生交叉的信号位置的逻辑索引。

zerocrossrate (___没有输出参数的情况下沿着y-轴和相应的窗口号沿x设在。如果窗口长度等于完整的信号长度,则该函数将窗口长度沿x-轴和窗口中间的交叉速率。

例子

全部折叠

考虑一个符号交替的向量。绘制数据图。

X = [1 -1 1 -1 1 -1 1 -1 1 -1 1 -1];情节(x)

图中包含一个轴对象。axis对象包含一个line类型的对象。

计算的过零率x

R =零交叉率(x)
R = 0.9500

使用第三个输出参数查找交叉发生的位置。情节x和过零点的位置。该函数返回交叉后下一个样本的索引,不一定是准确的交叉位置。第一个样本被标记为交叉点,因为函数考虑的初始状态x默认为零。

[~,~,indices] = zerocrossrate(x);情节(x)情节(x(指标),‘*’)举行

图中包含一个轴对象。axis对象包含2个line类型的对象。

计算的过零率x使用比较法。该比率与使用差值法计算的值不同。

rC = zerocrossrate(x,Method=“比较”
rC = 0.9000

计算的过零率x再次使用差分方法,并指定0为正数。速率等于使用比较方法计算的值。

rZ =零交叉率(x,零正=1)
rZ = 0.9000

现在指定的初始状态x作为1.速率等于之前的结果。

rI = 0 (x,InitialState=1)
rI = 0.9000

载入2011年1月在波士顿洛根机场每小时拍摄的一组摄氏温度读数。创建一个时间表和使用调整时间将数据汇总成日平均值。

负载bostempT =小时(1:24*31)';TT =时间表(t,tempC);rTT = retime(TT,“每天”“的意思是”);

计算温度超过月平均值的天数。绘制数据图,并在月平均温度处画一条水平线,以显示交叉点发生的位置。

avg = mean(TT.tempC)
Avg = -1.3007
[~,count] = 0 (rTT,Level=avg)
计数= 9
plot(hours(rTT.t/24),rTT.tempC) yline(avg) xlabel(自2011年1月1日起已经过的时间(天)) ylabel (每日平均气温(\circC))轴

图中包含一个轴对象。axis对象包含2个line、constantline类型的对象。

语音可分为有声和无声两种。表达了发声,比如元音,是在声带震动时发出的。在无声的说话时,如大多数辅音,声带不振动。您可以使用零交叉来分类音频信号中的浊音和浊音区域。

加载一个音频信号到MATLAB®工作空间。那个声音说:“橡树很坚固,也能遮荫。”

[y,fs] = audioread(“oak.m4a”);输入soundsc(y,fs)

信号在44.1千赫采样。使用比较方法计算10毫秒窗口的过零率。

Win = fs*0.01;(y,WindowLength=win,Method= .“比较”);

情节为了可视化每一段的交叉率。语音语音的交叉率较低,而无声语音的交叉率较高。

情节(率)

图中包含一个轴对象。axis对象包含一个line类型的对象。

使用阈值0.1区分浊音段和浊音段。创建一个signalMask对象,有两个类别(“unvocal”和“vocal”),并绘制感兴趣的区域(roi)。将发声和不发声的区域与每个发声单词的位置进行比较。

您可以使用Audio Toolbox™语音转文本功能从音频文件中提取单词。加载标记的信号集lsSpeechTranscription.mat进入工作区。标记的信号集包含音频信号、ROI限制和每个口语单词的标签。有关标记音频信号的详细信息,请参见在语音信号中标注口语.在情节中展示所讲的单词。

H = 0.1;Idu = find(rate > h);Idu (1:2) = [];Vi = [(idu-1) idu]*win;M = sigroi2binmask(vi,length(y));mask = signalMask([m ~m],Categories=[“无声”“表示”), SampleRate = fs);plotsigroi(面具,y)负载SpeechTranscriptionln = getLabelNames(ls);v = getLabelValues(ls,1,ln);v.Value = category (v.Value,v.Value);RL = v.ROILimits;VL = v.值;持有文本(意思是(RL, 2), -0.7 *(大小(重要的)),六世,HorizontalAlignment =“中心”...字形大小= 11,FontWeight =“大胆”)举行

图中包含一个轴对象。axis对象包含10个类型为line, text的对象。

加载一个包含15秒原声吉他音乐的音频文件。采样率为44.1 kHz。要播放音乐,取消最后一行代码的注释。

Fs = 44100;Y = audieread (“guitartune.wav”);%的声音(y, Fs)

将音频信号缓冲为重叠帧,每个帧有4096个样本。使用512个样本的重叠。

winLength = 4096;重叠= 512;[yB,~] = buffer(y,winLength,overlap,“nodelay”);

获得每一帧的过零率。要考虑帧重叠,请将初始状态指定为每帧中第一个样本的先前值。

init = winLength - overlap;状态= 0;ZCR = [];i = 1:size(yB,2) zcr = [zcr;zerocrossrate(yB(:,i),InitialState=state)];state = yB(init,i);结束

绘制音频信号并覆盖每一帧的过零率。

图yyaxisx = 0:1/Fs:(数字(y)-1)/Fs;情节(x, y)包含(“秒”) ylabel (“振幅”) yyaxis正确的xx = (1:size(yB,2))*((winLength-overlap)/Fs);情节(xx”,zcr) ylabel (“零点交叉率”

图中包含一个轴对象。axis对象包含2个line类型的对象。

计算未缓冲信号的过零率。若要获得等效于缓冲信号过零率的结果,请设置WindowLength4096而且OverlapLength512.判断两个结果是否相等。

zcr_batch = zerocrossrate(y,WindowLength=winLength,OverlapLength=overlap);isequal (zcr_batch zcr)
ans =逻辑1

输入参数

全部折叠

数据,指定为实值向量或矩阵。如果x是一个矩阵,该函数将过零率作为行向量返回,其中每个值对应于一列数据。

数据类型:|

输入时间表,指定为时间表TT必须包含均匀采样的单精度或双精度数据。的RowTimes属性必须包含持续时间datetime具有递增和有限值的向量。如果TT是单变量包含矩阵的时间表,或多个变量每个变量包含一个向量的时间表,则该函数独立地分析每个通道。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:zerocrossrate (x) =“比较”的方法,水平= 7,transitionEdge =“上升”)使用比较方法来计算的速率x正向过渡7

以前的状态x,指定为一个向量,其元素的数量等于输入通道的数量。

例子:zerocrossrate(x,InitialState=[1 0 -1 3])返回四通道输入信号的交叉速率x

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

计算过零率的方法,指定为“差异”“比较”.如果您没有指定方法时,函数采用差分法计算交叉率。

  • 比较—该函数标记指数当一个十字路口完全完成时也是如此。

  • 区别—该函数标记指数如果是真的abs(符号(x)‘(x1) > 0

例子:zerocrossrate (x,方法= "比较")计算的交叉率x使用比较法。

数据类型:字符|字符串

计算交叉速率的窗口长度,指定为正整数。默认窗口长度为信号长度。

例子:zerocrossrate (x, WindowLength = 20)返回20个样本窗口的交叉率x

例子:zerocrossrate (x, WindowLength = f * 0.05)返回窗口内50毫秒的交叉速率x给定一个样本率fs

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

相邻段之间的重叠样本数,以正整数指定。重叠部分必须小于窗口长度。

例子:zerocrossrate (x, OverlapLength = 0)返回没有重叠的段的交叉率。

例子:zerocrossrate (x, WindowLength = 20, OverlapLength = 5)返回具有五个重叠样本的重叠段的交叉率。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

为其计算交叉率的信号电平,指定为实标量。函数减去水平值,然后找到零交叉点。如果您没有指定水平时,该函数使用默认值0并返回过零率。

例子:zerocrossrate (x) = 1)返回输入信号的速率x十字架1

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

阈值高于和低于水平用于计算交叉速率的值,指定为实标量。该函数设置[-]范围内的所有输入值阈值阈值)0然后求零交点。

例子:zerocrossrate (x,阈值= 0.1)返回公差为-0.1到0.1的交叉率。

请注意

当你同时指定两者时水平而且阈值时,函数首先从输入中减去水平值,然后设置为0[-]范围内的结果输入值阈值阈值]。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

计算零交叉时要包含的转换,指定为“下降”“上升”,或“两个”.如果你指定“下降”时,函数只计算负向跃迁。如果你指定“上升”时,该函数只计算正向转换。

例子:zerocrossrate (x, TransitionEdge = "上升")的交叉速率x只适用于正向过渡。

数据类型:字符|字符串

符号约定,指定为逻辑标量。如果你指定ZeroPositive如果为真,则函数考虑0要积极。如果你指定ZeroPositive如果为false,则函数考虑0,1,和+1有明显的标志遵循的惯例标志函数。

例子:zerocrossrate (x, ZeroPositive = 1)返回输入信号的交叉速率x并认为0是正的。

数据类型:逻辑

输出参数

全部折叠

过零率,作为行向量或矩阵返回。当WindowLength等于信号长度,行向量的元素数是否等于其中的通道数xTT.当WindowLength小于信号长度,函数返回作为一个矩阵的交叉速率-th窗口和j-th列对应于j-th输入通道。

交叉次数,返回为N——- - - - - -矩阵N是多少个窗口和是输入通道的数量。的的交叉计数-th窗口和j的交叉计数jth通道。

交叉发生的信号位置上的逻辑索引,返回为N——- - - - - -WindowLength——- - - - - -数组,N是多少个窗口和是输入通道的数量。

请注意

指数可能不能代表信号交叉的确切位置。的zerocrossrate函数返回交叉后下一个示例的索引。

扩展功能

版本历史

R2021b中引入

另请参阅

功能