iscolagydF4y2Ba

判断窗重叠组合是否符合COLAgydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

特遣部队gydF4y2Ba= iscola (gydF4y2Ba窗口gydF4y2Ba,gydF4y2BanoverlapgydF4y2Ba)gydF4y2Ba检查指定的窗口和重叠满足常数重叠-添加(COLA)约束,以确保短时傅里叶反变换能对未修改光谱进行完美重构。gydF4y2Ba

特遣部队gydF4y2Ba= iscola (gydF4y2Ba窗口gydF4y2Ba,gydF4y2BanoverlapgydF4y2Ba,gydF4y2Ba方法gydF4y2Ba)gydF4y2Ba指定要使用的反转方法。gydF4y2Ba

[gydF4y2Ba特遣部队gydF4y2Ba,gydF4y2Ba米gydF4y2Ba) = iscola (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba也返回COLA求和的中位数。可以将这些输出参数与前面的任何输入语法一起使用。gydF4y2Ba

例子gydF4y2Ba

[gydF4y2Ba特遣部队gydF4y2Ba,gydF4y2Ba米gydF4y2Ba,gydF4y2BamaxDeviationgydF4y2Ba) = iscola (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba返回与中值的最大偏差gydF4y2Ba米gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

创建长度为120的周期性根- hann窗口。测试窗口是否符合COLA,重叠50%。gydF4y2Ba

赢得=√损害(120gydF4y2Ba“周期”gydF4y2Ba));noverlap = 60;gydF4y2Ba

检查窗口是否符合COLA,重叠50%。gydF4y2Ba

tf = iscola(赢,noverlap)gydF4y2Ba
tf =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba

创建长度为256的周期性汉明窗口。设置重叠添加的方法为gydF4y2Ba“ola”gydF4y2Ba.gydF4y2Ba

窗口=汉明(256gydF4y2Ba“周期”gydF4y2Ba);方法=gydF4y2Ba“ola”gydF4y2Ba;noverlap = 128;gydF4y2Ba

测试窗口是否符合COLA,重叠50%。还要计算COLA求和的中位数和与该求和的最大偏差。gydF4y2Ba

[tf, m, maxDeviation] = iscola(窗口、noverlap方法)gydF4y2Ba
tf =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba
m = 1.0800gydF4y2Ba
maxDeviation = 2.2204 e-16gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

分析窗口,指定为矢量。gydF4y2Ba

例子:gydF4y2Ba赢得=巴特利特(120)gydF4y2Ba是一个长度120的巴特利特窗口。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

重叠样本的数目,指定为小于的长度的正整数gydF4y2Ba窗口gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

重叠加法,具体为:gydF4y2Ba

  • “呼啦”gydF4y2Ba——加权交叠相加。gydF4y2Ba

  • “ola”gydF4y2Ba——交叠相加。gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

COLA遵从性,作为逻辑标量返回。如果函数返回agydF4y2Ba1gydF4y2Ba(true),则窗口和重叠长度满足COLA约束。gydF4y2Ba

COLA求和的中位数,返回实标量。如果输入符合COLA标准,则gydF4y2Ba米gydF4y2Ba等于可乐求和常数。gydF4y2Ba

与中位数的最大偏差gydF4y2Ba米gydF4y2Ba.如果gydF4y2Ba窗口gydF4y2Ba和gydF4y2BanoverlapgydF4y2Ba可乐是合规的吗gydF4y2BamaxDeviationgydF4y2Ba近似于COLA求和的期望数值精度误差。gydF4y2Ba

请注意gydF4y2Ba

你可以得出结论,严格遵守可乐,如果gydF4y2Bam = 1gydF4y2Ba和gydF4y2BamaxDeviationgydF4y2Ba与数值精度误差接近。gydF4y2Ba

更多关于gydF4y2Ba

全部折叠gydF4y2Ba

短时傅里叶反变换gydF4y2Ba

通过对STFT的每个DFT向量取IFFT,并叠加反转信号来计算短时傅里叶反变换。ISTFT的计算方法如下:gydF4y2Ba

xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba ∫gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba XgydF4y2Ba 米gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba egydF4y2Ba jgydF4y2Ba 2gydF4y2Ba πgydF4y2Ba fgydF4y2Ba ngydF4y2Ba dgydF4y2Ba fgydF4y2Ba =gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba ∫gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba XgydF4y2Ba 米gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba egydF4y2Ba jgydF4y2Ba 2gydF4y2Ba πgydF4y2Ba fgydF4y2Ba ngydF4y2Ba dgydF4y2Ba fgydF4y2Ba =gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba xgydF4y2Ba 米gydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba

在哪里gydF4y2Ba RgydF4y2Ba 为连续dft之间的跃点大小,gydF4y2Ba XgydF4y2Ba 米gydF4y2Ba 加窗数据的DFT是否以时间为中心gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba 和gydF4y2Ba xgydF4y2Ba 米gydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba )gydF4y2Ba .逆STFT是对原始信号的完美再现,只要gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba ggydF4y2Ba 一个gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba )gydF4y2Ba =gydF4y2Ba cgydF4y2Ba ∀gydF4y2Ba ngydF4y2Ba ∈gydF4y2Ba ℤgydF4y2Ba 在哪里gydF4y2Ba分析窗口gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba 是用来屏蔽原始信号的gydF4y2Ba cgydF4y2Ba 是一个常数。下图描述了重建原始信号的步骤。gydF4y2Ba

常数重叠-添加(COLA)约束gydF4y2Ba

为了保证非修饰谱的成功重构,分析窗口必须满足COLA约束。一般情况下,如果分析窗口满足条件gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba ggydF4y2Ba 一个gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba )gydF4y2Ba =gydF4y2Ba cgydF4y2Ba ∀gydF4y2Ba ngydF4y2Ba ∈gydF4y2Ba ℤgydF4y2Ba ,窗户被认为是符合可乐。另外,可乐依从性可以分为弱遵从性和强遵从性。gydF4y2Ba

  • 弱COLA顺应性意味着分析窗口的傅立叶变换在帧率谐波下为零,因此gydF4y2Ba

    GgydF4y2Ba (gydF4y2Ba fgydF4y2Ba kgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba kgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba ...gydF4y2Ba ,gydF4y2Ba RgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba fgydF4y2Ba kgydF4y2Ba ≜gydF4y2Ba kgydF4y2Ba RgydF4y2Ba .gydF4y2Ba

    混叠抵消受到光谱修正的干扰。弱COLA依赖于频域的混叠抵消。因此,只要信号没有经过任何光谱修改,使用弱cola顺应窗就可以实现完美重构。gydF4y2Ba

  • 对于强的COLA遵从性,窗口的傅里叶变换必须与帧速率下采样的带宽限制一致gydF4y2Ba

    GgydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba fgydF4y2Ba ≥gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba RgydF4y2Ba .gydF4y2Ba

    该方程表明,强COLA约束不允许混叠。另外,对于强可乐顺应性,该常数的值gydF4y2Ba cgydF4y2Ba 必须等于1。一般来说,如果以任何方式修改短时谱,则首选更强的COLA顺应窗。gydF4y2Ba

你可以使用gydF4y2BaiscolagydF4y2Ba功能检查弱可乐符合性。用于检查COLA合规性的求和数由窗口长度和跳数决定。一般来说,它是常用的gydF4y2Ba 一个gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 在gydF4y2Ba ∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba ggydF4y2Ba 一个gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba )gydF4y2Ba =gydF4y2Ba cgydF4y2Ba ∀gydF4y2Ba ngydF4y2Ba ∈gydF4y2Ba ℤgydF4y2Ba 加权重叠加法(WOLA),和gydF4y2Ba 一个gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 交叠相加(OLA)。默认情况下,gydF4y2BaistftgydF4y2Ba采用WOLA方法,通过应用agydF4y2Ba合成窗口gydF4y2Ba在执行重叠添加方法之前。gydF4y2Ba

一般情况下,合成窗口与分析窗口是相同的。通过对强OLA窗口取平方根,可以构建有用的WOLA窗口。您可以对所有非负OLA窗口使用此方法。例如,根- hann窗口就是一个很好的WOLA窗口示例。gydF4y2Ba

完美的重建gydF4y2Ba

一般来说,计算输入信号的短时傅立叶变换并对其进行反变换并不能得到完美的重构。如果想要ISTFT的输出与原始输入信号尽可能的匹配,信号和窗口必须满足以下条件:gydF4y2Ba

  • 输入大小-如果你反转的输出gydF4y2BastftgydF4y2Ba使用gydF4y2BaistftgydF4y2Ba希望结果和输入信号的长度相同gydF4y2BaxgydF4y2Ba的价值gydF4y2Ba kgydF4y2Ba =gydF4y2Ba (gydF4y2Ba lgydF4y2Ba egydF4y2Ba ngydF4y2Ba ggydF4y2Ba tgydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba -gydF4y2Ba ngydF4y2Ba ogydF4y2Ba vgydF4y2Ba egydF4y2Ba rgydF4y2Ba lgydF4y2Ba 一个gydF4y2Ba pgydF4y2Ba )gydF4y2Ba (gydF4y2Ba lgydF4y2Ba egydF4y2Ba ngydF4y2Ba ggydF4y2Ba tgydF4y2Ba hgydF4y2Ba (gydF4y2Ba wgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba dgydF4y2Ba ogydF4y2Ba wgydF4y2Ba )gydF4y2Ba -gydF4y2Ba ngydF4y2Ba ogydF4y2Ba vgydF4y2Ba egydF4y2Ba rgydF4y2Ba lgydF4y2Ba 一个gydF4y2Ba pgydF4y2Ba )gydF4y2Ba 必须是整数。gydF4y2Ba

  • 符合可乐-使用符合可乐的窗口,假设您没有修改信号的短时间傅里叶变换。gydF4y2Ba

  • 填充-如果输入信号的长度等于gydF4y2BakgydF4y2Ba不是整数,在计算短时间傅里叶变换之前对信号进行零填充。在反转信号后去掉多余的零。gydF4y2Ba

参考文献gydF4y2Ba

[1] j·B·艾伦用离散傅里叶变换进行短期光谱分析、合成和修正。gydF4y2BaIEEE声学、语音和信号处理汇刊。gydF4y2Ba1977年6月,第25卷第3期,第235-238页。gydF4y2Ba

[2] Griffin, Daniel W.和Jae S. Lim。“修正短时傅里叶变换的信号估计”。gydF4y2BaIEEE声学、语音和信号处理汇刊。gydF4y2Ba第32卷第2期,1984年4月,236-243页。gydF4y2Ba

[3]夏普,布鲁斯。gydF4y2Ba重叠叠加处理的可逆性gydF4y2Ba.gydF4y2Bahttps://gauss256.github.io/blog/cola.htmlgydF4y2Ba已于2019年7月通过。gydF4y2Ba

史密斯,我是朱利叶斯·奥里翁。gydF4y2Ba频谱音频信号处理gydF4y2Ba.gydF4y2Bahttps://ccrma.stanford.edu/~jos/sasp/gydF4y2Ba,在线图书,2011版,访问2018年11月。gydF4y2Ba

扩展功能gydF4y2Ba

C / c++代码生成gydF4y2Ba
使用MATLAB®Coder™生成C和c++代码。gydF4y2Ba

另请参阅gydF4y2Ba

功能gydF4y2Ba

介绍了R2019agydF4y2Ba