主要内容gydF4y2Ba

dsp.STFTgydF4y2Ba

短时傅立叶变换gydF4y2Ba

描述gydF4y2Ba

的gydF4y2Badsp.STFTgydF4y2Ba对象计算短时傅里叶变换)的时域输入信号。对象接收帧的时域数据,缓冲他们所需的窗口长度和重叠长度,增加样本的窗口,然后对缓冲执行FFT窗。更多细节,请参阅gydF4y2Ba算法gydF4y2Ba。gydF4y2Ba

利用STFT分析信号的频率含量随时间。gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

月31gydF4y2Ba= dsp.STFTgydF4y2Ba返回一个对象,gydF4y2Ba月31gydF4y2Ba,实现了短时FFT。独立对象处理数据在每个输入通道。gydF4y2Ba

月31gydF4y2Ba= dsp.STFT (gydF4y2Ba窗口gydF4y2Ba)gydF4y2Ba返回一个对象与短时FFTgydF4y2Ba窗口gydF4y2Ba属性设置为gydF4y2Ba窗口gydF4y2Ba。gydF4y2Ba

月31gydF4y2Ba= dsp.STFT (gydF4y2Ba窗口gydF4y2Ba,gydF4y2Ba重叠gydF4y2Ba)gydF4y2Ba返回一个对象与短时FFTgydF4y2Ba窗口gydF4y2Ba属性设置为gydF4y2Ba窗口gydF4y2Ba和gydF4y2BaOverlapLengthgydF4y2Ba属性设置为gydF4y2Ba重叠gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

月31gydF4y2Ba= dsp.STFT (gydF4y2Ba窗口gydF4y2Ba,gydF4y2Ba重叠gydF4y2Ba,gydF4y2BanfftgydF4y2Ba)gydF4y2Ba返回一个对象与短时FFTgydF4y2Ba窗口gydF4y2Ba属性设置为gydF4y2Ba窗口gydF4y2Ba,gydF4y2BaOverlapLengthgydF4y2Ba属性设置为gydF4y2Ba重叠gydF4y2Ba,gydF4y2BaFFTLengthgydF4y2Ba属性设置为gydF4y2BanfftgydF4y2Ba。gydF4y2Ba

月31gydF4y2Ba= dsp.STFT (gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba返回一个短时FFT对象与每个指定的属性名设置为指定的值。你可以在任何顺序指定额外的参数名称-值对。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

分析窗口中,指定为一个向量的元素。gydF4y2Ba

对象缓冲区输入重叠窗口部分使用指定的窗口长度和重叠长度,然后乘以每个重叠部分的窗口。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

连续的样本数量的窗口重叠,指定为一个正整数。窗口重叠减少了工件在数据边界。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

FFT长度指定为一个正整数。这个属性决定了STFT的长度输出(行数)。FFT长度必须大于或等于窗口长度。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

频率范围在短时FFT计算,指定为:gydF4y2Ba

  • 双侧的gydF4y2Ba——短期FFT计算复杂的或真实的输入信号。短时FFT的长度等于中指定的值gydF4y2BaFFTLengthgydF4y2Ba财产。gydF4y2Ba

  • “单向的”gydF4y2Ba——真正的片面的短时FFT计算输入信号。当FFT长度是偶数,短时FFT长度gydF4y2BaFFTLengthgydF4y2Ba/ 2 + 1。如果FFT长度是奇数,短时FFT的长度等于(gydF4y2BaFFTLengthgydF4y2Ba+ 1)/ 2。gydF4y2Ba

使用gydF4y2Ba

语法gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

ygydF4y2Ba= 31 (gydF4y2BaxgydF4y2Ba)gydF4y2Ba适用于短期FFT的输入gydF4y2BaxgydF4y2Ba并返回频域的输出gydF4y2BaygydF4y2Ba。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

时域输入信号,指定为一个向量或矩阵。如果输入是一个矩阵,该对象将每一列作为一个独立的通道。帧大小(的行数gydF4y2BaxgydF4y2Ba)必须等于或小于跳长度(窗口长度−重叠长度)。gydF4y2Ba

输入可以是可变大小的信号。即信号的帧大小可以改变调用对象之间没有调用算法gydF4y2Ba释放gydF4y2Ba函数。通道的数量必须是相同的。gydF4y2Ba

如果gydF4y2BaFrequencyRangegydF4y2Ba属性设置为gydF4y2Ba“单向的”gydF4y2Ba,输入必须是真实的。如果gydF4y2BaFrequencyRangegydF4y2Ba属性设置为gydF4y2Ba双侧的gydF4y2Ba,输入可以是真实的或复杂的。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba
复数的支持:金宝appgydF4y2Ba是的gydF4y2Ba

输出参数gydF4y2Ba

全部展开gydF4y2Ba

短时FFT输出,作为一个向量或矩阵返回。gydF4y2Ba

如果有足够多的样本(等于跳长度)形成一个STFT输出,gydF4y2BaygydF4y2Ba是一个gydF4y2BaFFTLengthgydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba矩阵,gydF4y2BaNgydF4y2Ba输入通道的数量。如果没有足够的样品形成一个STFT输出,gydF4y2BaygydF4y2Ba是空的。gydF4y2Ba

输出的数据类型匹配的输入信号。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba
复数的支持:金宝appgydF4y2Ba是的gydF4y2Ba

对象的功能gydF4y2Ba

一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba
克隆gydF4y2Ba 创建重复的gydF4y2Ba系统对象gydF4y2Ba
isLockedgydF4y2Ba 确定gydF4y2Ba系统对象gydF4y2Ba在使用gydF4y2Ba
getFrequencyVectorgydF4y2Ba 得到的频率向量的短时FFT计算gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

短时谱衰减是通过应用时变衰减的短时谱噪声信号。衰减的获得是由噪声功率的估计在每个子带的光谱。这个增益,当应用于噪声频谱,减弱噪声较高的部分波段权力和举升机噪声功率较小的部分波段。gydF4y2Ba

下面是执行短时谱衰减所涉及的步骤:gydF4y2Ba

  1. 分析了噪声输入信号通过计算短时傅里叶变换(STFT)。gydF4y2Ba

  2. 乘以每个部分波段转换后的信号与一个真正积极的增益小于1。gydF4y2Ba

  3. 综合去噪部分波段通过逆短时傅里叶变换(ISTFT)。resconstructed信号去噪的输入信号。gydF4y2Ba

使用gydF4y2Badsp.STFTgydF4y2Ba和gydF4y2Badsp.ISTFTgydF4y2Ba对象计算短时和逆短时傅里叶变换,分别。gydF4y2Ba

嘈杂的输入信号gydF4y2Ba

输入音频信号采样22050 Hz。的gydF4y2Badsp.AudioFileReadergydF4y2Ba512年帧对象读取这个信号样本。音频信号是被高斯白噪声的标准差为0.05。使用gydF4y2BaaudioDeviceWritergydF4y2Ba对象玩吵闹的音频信号到你的电脑的音频设备。gydF4y2Ba

FrameLength = 512;误判率= dsp.AudioFileReader (gydF4y2Ba“speech_dft.wav”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“SamplesPerFrame”gydF4y2Ba,FrameLength);adw = audioDeviceWriter (gydF4y2Ba“SampleRate”gydF4y2Ba,afr.SampleRate);noiseStd = 0.05;gydF4y2Ba而gydF4y2Ba~结束(误判率)cleanAudio =误判率();noisyAudio = cleanAudio + noiseStd * randn (FrameLength, 1);adw (noisyAudio);gydF4y2Ba结束gydF4y2Ba重置(误判率)gydF4y2Ba

短时和逆短时傅里叶变换对象进行初始化gydF4y2Ba

初始化gydF4y2Badsp.STFTgydF4y2Ba和gydF4y2Badsp.ISTFTgydF4y2Ba对象。设置窗口的长度等于输入帧长度和跳长度为16。重叠长度的区别是窗口长度和跳,gydF4y2BaOLgydF4y2Ba=gydF4y2Ba王gydF4y2Ba- - - - - -gydF4y2Ba霍奇金淋巴瘤gydF4y2Ba。设定FFT长度为1024。gydF4y2Ba

WindowLength = FrameLength;HopLength = 16;numHopsPerFrame = FrameLength / 16;FFTLength = 1024;gydF4y2Ba

窗口用于计算STFT和ISTFT是一个周期gydF4y2Ba汉明gydF4y2Ba窗口长度为512。的gydF4y2BaConjugateSymmetricInputgydF4y2Ba国旗的gydF4y2BaistfgydF4y2Ba对象设置为gydF4y2Ba真正的gydF4y2Ba,显示的输出gydF4y2BaistfgydF4y2Ba对象是一个共轭对称的信号。gydF4y2Ba

赢得=汉明(WindowLength,gydF4y2Ba“周期”gydF4y2Ba);月31 = dsp.STFT(赢,WindowLength-HopLength FFTLength);istf = dsp.ISTFT(赢,WindowLength-HopLength 1 0);gydF4y2Ba

得到估计量gydF4y2Ba

下一步是定义增益估计参数。这可以应用于噪声频谱衰减噪声能力和较高的部分波段升降机噪声功率较小的部分波段。gydF4y2Ba

12月= 16;α= 15;stftNorm =(总和(赢。*赢)/ 12月)^ 2;gydF4y2Ba

光谱衰减gydF4y2Ba

饲料的音频信号gydF4y2Ba月31gydF4y2Ba一次一个hop-length。估计获得适用于转换后的信号。重构去噪版本的原始语音信号进行逆傅里叶变换在各个频段。玩去噪音频信号到计算机的音频设备。gydF4y2Ba

而gydF4y2Ba~结束(误判率)cleanAudio =误判率();noisyAudio = cleanAudio + noiseStd * randn (FrameLength, 1);y = 0 (FrameLength, 1);gydF4y2Ba% y运用音频帧gydF4y2Ba%喂一次音频stft hop-length之一gydF4y2Ba为gydF4y2Ba指数= 1:numHopsPerFrame X = 31 (noisyAudio((索引1)* HopLength + 1:指数* HopLength));gydF4y2Ba%得到估计量gydF4y2BaZ = abs (X)。^ 2 / (noiseStd ^ 2 *α)/ stftNorm;Z (Z < = 1) = 1;Z = 1 - 1. / Z;Z =符号(Z)。* sqrt (abs (Z));X = X。* Z;gydF4y2Ba%转换回时域gydF4y2Bay((索引1)* HopLength + 1:指数* HopLength) = istf (X);gydF4y2Ba结束gydF4y2Ba%听去噪音频:gydF4y2Baadw (y);gydF4y2Ba结束gydF4y2Ba

完美重建时的输出gydF4y2Badsp.ISTFTgydF4y2Ba匹配的输入gydF4y2Badsp.STFTgydF4y2Ba。完美重建获得如果分析窗口,gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ,遵循不断交叠相加(可乐)在hop-size财产gydF4y2BaRgydF4y2Ba。gydF4y2Ba

∑gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba - - - - - -gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba - - - - - -gydF4y2Ba 先生gydF4y2Ba )gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba ∀gydF4y2Ba ngydF4y2Ba ∈gydF4y2Ba ΖgydF4y2Ba (gydF4y2Ba ggydF4y2Ba ∈gydF4y2Ba 可乐gydF4y2Ba (gydF4y2Ba RgydF4y2Ba )gydF4y2Ba )gydF4y2Ba

一个信号是完全重建的输出gydF4y2Badsp.ISTFTgydF4y2Ba对象匹配的输入gydF4y2Badsp.STFTgydF4y2Ba对象。gydF4y2Ba

iscolagydF4y2Ba函数gydF4y2Ba

的gydF4y2BaiscolagydF4y2Ba函数检查指定的窗口和重叠满足可乐约束以确保逆短时傅里叶变换(ISTFT)导致完美重建非转基因光谱。函数返回一个逻辑gydF4y2Ba真正的gydF4y2Ba如果输入参数是COLA-compliant和逻辑的组合gydF4y2Ba假gydF4y2Ba如果不是。的gydF4y2Ba方法gydF4y2Ba函数的参数设置gydF4y2Ba“ola”gydF4y2Ba或gydF4y2Ba“呼啦”gydF4y2Ba根据反演方法使用加权交叠相加(呼啦)。gydF4y2Ba

检查是否gydF4y2Ba损害()gydF4y2Ba窗口长度120样品和一个重叠的60个样本是可乐兼容。gydF4y2Ba

winLen = 120;overlapLen = 60;赢得=损害(winLen,gydF4y2Ba“周期”gydF4y2Ba);tf = iscola (overlapLen赢,gydF4y2Ba“ola”gydF4y2Ba)gydF4y2Ba
tf =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba

初始化gydF4y2Ba

初始化gydF4y2Badsp.STFTgydF4y2Ba和gydF4y2Badsp.ISTFTgydF4y2Ba系统对象的gydF4y2Ba损害gydF4y2Ba可乐的窗口。设置FFT长度等于窗口长度。gydF4y2Ba

frameLen = winLen-overlapLen;月31 = dsp.STFT (gydF4y2Ba“窗口”gydF4y2Ba,赢了,gydF4y2Ba“OverlapLength”gydF4y2BaoverlapLen,gydF4y2Ba“FFTLength”gydF4y2Ba,winLen);istf = dsp.ISTFT (gydF4y2Ba“窗口”gydF4y2Ba,赢了,gydF4y2Ba“OverlapLength”gydF4y2BaoverlapLen,gydF4y2Ba“WeightedOverlapAdd”gydF4y2Ba,0);gydF4y2Ba

重建数据gydF4y2Ba

计算一个随机的STFT的信号。设置输入信号的长度等于跳长度(窗口长度-重叠长度)。由于窗口是可乐的,非转基因的ISTFT光谱完全重建原始时域信号。gydF4y2Ba

确认,比较输入,gydF4y2BaxgydF4y2Ba重建的输出,gydF4y2BaygydF4y2Ba。由于对象引入的延时,重建相比,时间转向输入输出。因此,比较规范的重构输出之间的区别,gydF4y2BaygydF4y2Ba和前面的输入,gydF4y2BaxprevgydF4y2Ba。常态很小,表明输出信号是输入信号的完全重构版本。gydF4y2Ba

n = 0 (1100);xprev = 0;gydF4y2Ba为gydF4y2Ba我= 1:10 0 x = randn (frameLen, 1);X = 31 (X);y = istf (X);n (i) =规范(y-xprev);xprev = x;gydF4y2Ba结束gydF4y2Bamax (abs (n))gydF4y2Ba
ans = 1.6972 e-13gydF4y2Ba

ISTFT与加权交叠相加(呼啦)gydF4y2Ba

在呼啦,第二个窗口称为合成窗口,gydF4y2Ba fgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba 后,应用传输线操作和交叠相加。合成和分析窗口通常是相同的,通常是通过windows的平方根满足可乐(从而确保完美重建)。gydF4y2Ba

iscolagydF4y2Ba函数gydF4y2Ba

检查是否gydF4y2Ba√损害())gydF4y2Ba窗口长度120样品和一个重叠的60个样本呼啦兼容。设置gydF4y2Ba方法gydF4y2Ba论点的gydF4y2BaiscolagydF4y2Ba函数gydF4y2Ba“呼啦”gydF4y2Ba。的输出gydF4y2BaiscolagydF4y2Ba函数是1表明这个窗口是呼啦兼容。gydF4y2Ba

winWOLA =√损害winLen,gydF4y2Ba“周期”gydF4y2Ba));tfWOLA = iscola (winWOLA overlapLen,gydF4y2Ba“呼啦”gydF4y2Ba)gydF4y2Ba
tfWOLA =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba

重建数据与呼啦gydF4y2Ba

释放gydF4y2Badsp.STFTgydF4y2Ba和gydF4y2Badsp.ISTFTgydF4y2Ba系统对象并设置窗口gydF4y2Ba√损害winLen,“周期性”))gydF4y2Ba窗口。使用加权交叠相加gydF4y2BaISTFTgydF4y2Ba端,设置gydF4y2Ba“WeightedOverlapAdd”gydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

释放(31);释放(istf);底座。窗口= winWOLA;istf。窗口= winWOLA;istf。WeightedOverlapAdd = true;n = 0 (1100);xprev = 0;gydF4y2Ba为gydF4y2Ba我= 1:10 0 x = randn (frameLen, 1);X = 31 (X);y = istf (X);n (i) =规范(y-xprev);xprev = x;gydF4y2Ba结束gydF4y2Bamax (abs (n))gydF4y2Ba
ans = 4.6664 e15汽油gydF4y2Ba

的gydF4y2Ba规范gydF4y2Ba输入信号之间的差异和重构信号很小,表明信号重建的完美。gydF4y2Ba

更多关于gydF4y2Ba

全部展开gydF4y2Ba

算法gydF4y2Ba

这是一个草图算法是如何实现的:gydF4y2Ba

时域输入信号是基于用户指定的窗口长度(缓冲gydF4y2Ba王gydF4y2Ba)和重叠长度(gydF4y2BaOLgydF4y2Ba)。跳的大小,gydF4y2BaRgydF4y2Ba,被定义为gydF4y2BaRgydF4y2Ba=gydF4y2Ba王gydF4y2Ba- - - - - -gydF4y2BaOLgydF4y2Ba。缓冲窗口长度乘以一个指定的窗口gydF4y2Ba王gydF4y2Ba。这个产品的FFT STFT输出。时域样本的数量要求组建一个新的FFT输出gydF4y2BaRgydF4y2Ba。gydF4y2Ba

下面是一个例子的原始时域随机信号的样子,与重叠窗口相乘后,应用FFT后增加窗口:gydF4y2Ba

引用gydF4y2Ba

[1]艾伦J.B.,和l。R。Rabiner. "A Unified Approach to Short-Time Fourier Analysis and Synthesis,''IEEE学报》,卷65,gydF4y2Ba第1564 - 1558页,1977年11月。gydF4y2Ba

扩展功能gydF4y2Ba

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

版本历史gydF4y2Ba

介绍了R2019agydF4y2Ba

另请参阅gydF4y2Ba

对象gydF4y2Ba

块gydF4y2Ba