主要内容

stftmag2sig

从STFT幅度重建信号

描述

例子

x= stftmag2sig (年代nfft返回一个重建的时域实信号,x,由短时傅里叶变换(STFT)幅度估计,年代,基于Griffin-Lim算法。函数假设年代是用离散傅里叶变换(DFT)长度计算的吗nfft

例子

x= stftmag2sig (年代nfftfs返回重构信号,假设年代抽样率fs

x= stftmag2sig (年代nfftts返回重构信号,假设年代是否随采样时间进行采样ts

x= stftmag2sig (___名称,值使用名称-值对参数指定其他选项。选项包括FFT窗口和指定初始阶段的方法。这些参数可以添加到前面的任何输入语法中。例如,“FrequencyRange”、“单向的”,“InitializePhaseMethod”、“随机”指定信号由带有随机初始相位的单边短时傅立叶变换重构。

xt信息) = stftmag2sig (___还返回信号被重建的时间瞬间和包含有关重建过程信息的结构。

例子

全部折叠

考虑512个正弦波样本,其归一化频率为 π / 60 rad/样品,DC值为1。计算信号的STFT。

n = 512;x = cos(π/ 60 * (0:n - 1)) + 1;S = stft (x);

从短时傅里叶变换的大小重建正弦信号。绘制原始信号和重建信号。

xr = stftmag2sig (abs (S)、大小(年代,1));情节(x)情节(xr,“——”“线宽”, 2)传奇(“原始”“重建”

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表原始的,重建的。

重复计算,但现在用零填充信号以减少边缘效应。

xz = circshift ([x;0 (n, 1)), n / 2);深圳= stft (xz);xr = stftmag2sig (abs(深圳),大小(深圳,1));xz = xz (n / 2 + (1: n));xr = xr (n / 2 + (1: n));情节(xz)情节(xr,“——”“线宽”, 2)传奇(“原始”“重建”

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表原始的,重建的。

重复计算,但现在减少边缘效应的假设x是一段两倍长的信号。

xx = cos(π/ 60 * (- n / 2: n / 2 + n - 1)”)+ 1;Sx = stft (xx);xr = stftmag2sig (abs (Sx),大小(Sx, 1));xx = xx (n / 2 + (1: n));xr = xr (n / 2 + (1: n));情节(xx)情节(xr,“——”“线宽”, 2)传奇(“原始”“重建”

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表原始的,重建的。

加载一个音频信号,包含两个下降的啁啾和一个宽带飞溅的声音。信号以8192hz采样。绘制信号的STFT。将波形分割成128个样本段,并利用汉明窗口对这些段加窗。指定64个相邻线段的重叠样本和1024个FFT点。

负载长条木板泰=(0:长度(y) 1) / Fs;要听,输入(y,Fs)风=汉明(128);克拉= 64;nfft = 1024;stft (y, Fs,“窗口”、风能、“OverlapLength”克拉,“FFTLength”nfft)

图中包含一个轴。标题为短时傅里叶变换的轴包含一个图像类型的对象。

计算短时傅里叶变换的幅值和相位。

s = stft (y, Fs,“窗口”、风能、“OverlapLength”克拉,“FFTLength”, nfft);smag = abs (s);sph =角(s);

根据短时傅里叶变换的幅度重建信号。使用用于计算STFT的相同参数。默认情况下,stftmag2sig将阶段初始化为零,并使用100次优化迭代。

[x, tx,信息]= stftmag2sig (smag nfft, Fs,“窗口”、风能、“OverlapLength”克拉);要听,输入声音(x,Fs)

绘制原始信号和重建信号。为了更好的比较,将重建信号向上和向右偏移。

情节(泰,y, tx + 500 / Fs x + 1)传说(“原始”“重建”“位置”“最佳”

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表原始的,重建的。

输出对最后两个迭代之间的收敛的相对改进。

impr = info。在consistency
impr = 0.0424

通过加倍优化迭代次数和从STFT将初始阶段设置为实际阶段来改进重构。绘制原始信号和重建信号。为了更好的比较,画出重建信号的负值,并将其向上和向右偏移。

[x, tx,信息]= stftmag2sig (smag nfft, Fs,“窗口”、风能、“OverlapLength”克拉,...“MaxIterations”, 200,“InitialPhase”, sph);要听,输入声音(x,Fs)情节(泰,y, tx + 500 / Fs - x + 1)传说(“原始”“重建”“位置”“最佳”

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表原始的,重建的。

输出对最后两个迭代之间的收敛的相对改进。

impr = info。在consistency
impr = 1.3874 e-16

输入参数

全部折叠

STFT幅度,用矩阵表示。年代必须对应一个单通道的实数信号。

例子:腹肌stft(π/ 2 *(0:255)),“FFTLength”,128年)指定正弦函数的短时傅里叶变换幅度。

例子:腹肌stft尖声地说1 (0:1/1e3:1, 25日,50)))指定在1khz采样的啁啾的短时傅里叶变换幅度。

数据类型:|

DFT点的数量,指定为一个正整数标量。这个参数总是必须的。

数据类型:|

采样率,指定为一个正数标量。

采样时间,指定为持续时间标量。指定ts是否等同于设定采样率f年代= 1 /ts

例子:秒(1)是一个持续时间表示连续信号采样之间1秒时间差的标量。

数据类型:持续时间

名称-值对的观点

指定可选的逗号分隔对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按如下顺序指定几个名称和值对参数Name1, Value1,…,的家

例子:“FrequencyRange”、“单向的”,“InitializePhaseMethod”、“随机”指定信号由带有随机初始相位的单边短时傅立叶变换重构。

不一致显示选项,指定为逗号分隔的对,由“显示”一个逻辑值。如果将此选项设置为真正的,然后stftmag2sig显示每20次优化迭代后的规范化不一致性,并在运行结束时显示停止信息。

数据类型:逻辑

STFT幅度的频率范围,由逗号分隔的一对组成“FrequencyRange”“中心”双侧的,或“单向的”

  • “中心”-治疗年代作为双面中心短时傅立叶变换的大小。如果nfft是偶数,那么年代是否认为是在这个区间内计算的(-ππrad /样品。如果nfft是奇数,那么年代是否认为是在这个区间内计算的(-ππrad /样品。如果指定时间信息,则间隔为(-f年代f年代/ 2)/单位时间和周期(-f年代f年代/ 2)周期/单位时间,分别,其中f年代是样本率。

  • 双侧的-治疗年代作为双侧短时傅里叶变换的大小[0, 2πrad /样品。如果指定时间信息,则间隔为[0,f年代周期/单位时间。

  • “单向的”-治疗年代作为单侧STFT的大小。如果nfft是偶数,那么年代是否认为是在这个区间内计算的[0,πrad /样品。如果nfft是奇数,那么年代是否认为是在这个区间内计算的[0,πrad /样品。如果指定时间信息,则间隔为[0,f年代/ 2)/单位时间和周期[0,f年代/ 2)周期/单位时间,分别,其中f年代是样本率。

数据类型:字符|字符串

不一致性容忍度的重建过程,由逗号分隔的对组成“InconsistencyTolerance”一个正标量。时,重构过程停止规范化的不一致低于公差。

数据类型:|

阶段初始化,指定为逗号分隔的对,由“InitializePhaseMethod”“零”“随机”.只指定其中一个“InitializePhaseMethod”“InitialPhase”

  • “零”—函数初始化阶段为0。

  • “随机”—该函数初始化各阶段为在时间间隔内均匀分布的随机数(- - - - - -ππ

数据类型:字符|字符串

初始阶段,指定为逗号分隔的对,由“InitialPhase”以及值域内的实数矩阵(- - - - - -ππ.矩阵的大小必须与年代.只指定其中一个“InitializePhaseMethod”“InitialPhase”

例子:角(stftrandn(1000,1)))指定一个随机信号的短时傅里叶变换的相位。

例子:2 *π*(兰德(大小(stft (randn (1000,1)))) 1/2)指定在间隔内均匀分布的随机相位的矩阵(- - - - - -ππ.该矩阵与随机信号的短时傅里叶变换具有相同的大小。

数据类型:|

输入时间维度,指定为逗号分隔的对,由“InputTimeDimension”“acrosscolumns”“downrows”

  • “acrosscolumns”—该函数假定时间维度为年代是跨列的,而频率维度是沿行的。

  • “downrows”—该函数假定时间维度为年代是沿行而下,频率维度是跨列。

数据类型:字符|字符串

最大优化迭代次数,指定为逗号分隔的对,由“MaxIterations”一个正整数标量。当迭代次数大于时,重构过程停止“MaxIterations”

数据类型:|

信号重建算法,指定为逗号分隔对组成“方法”其中之一是:

  • “杯子”-原始的重建算法,由Griffin和Lim提出,在[1]

  • “fgla”- Perraudin, Balazs和Søndergaard提出的快速Griffin-Lim算法[2]

  • “legla”-由Le Roux, Kameoka, Ono和Sagayama提出的快速算法,并在[3]

数据类型:字符|字符串

相邻段之间重叠的样本数,用逗号分隔,由“OverlapLength”一个小于的正整数“窗口”.成功的信号重建需要“OverlapLength”来匹配用于生成STFT幅度的重叠段的数量。如果您省略“OverlapLength”或指定为空,则设置为小于或等于窗口长度75%的最大整数,即默认Hann窗口的96个样本值。

数据类型:|

截断订单“legla”更新规则,指定为逗号分隔对,由“TruncationOrder”一个正整数。这个论证只适用于以下情况“方法”被设置为“legla”并控制该方法每次迭代中更新的阶段值的数量。如果不指定,“TruncationOrder”采用自适应算法确定。

数据类型:|

用于快速Griffin-Lim算法的更新参数,指定为逗号分隔对,由“UpdateParameter”一个正标量。这个论证只适用于以下情况“方法”被设置为“fgla”并为该方法的更新规则指定参数。

数据类型:|
复数的支持:万博1manbetx是的

谱窗,由逗号分隔的对组成“窗口”和一个向量。成功的信号重建需要“窗口”来匹配用来产生STFT幅度的窗口。如果不指定窗口或指定为空,则该函数使用长度为128的周期Hann窗口。的长度“窗口”必须大于或等于2。

有关可用窗口的列表,请参见窗户

例子:损害(128年,“周期性”)(1-cos(2 *π* (128:1:1)/ 128))/ 2两者都指定stftmag2sig

数据类型:|

输出参数

全部折叠

重构的时域信号,作为一个向量返回。

信号被重建的时间瞬间,作为一个矢量返回。

重构过程信息,以包含以下字段的结构形式返回:

  • ExitFlag- - - - - -终止标志。

    • 的值0算法达到最大迭代次数后停止。

    • 的值1表示算法满足相对容忍度后停止。

  • NumIterations—总迭代次数。

  • 不一致-后两个迭代之间收敛的平均相对改进。

  • ReconstructedPhase-最后一次迭代的重构阶段。

  • ReconstructedSTFT-最后一次迭代重构短时傅里叶变换。

更多关于

全部折叠

规范化的不一致

规范化的不一致度量在连续的优化迭代中对重建过程收敛性的改进。

规范化不一致性定义为

不一致 STFT ISTFT 年代 美国东部时间 年代 美国东部时间 年代 美国东部时间

在哪里年代美国东部时间为每次迭代估计的复短时傅里叶变换,括号表示矩阵范数,STFT为短时傅里叶变换,和ISTFT表示它的逆矩阵。stftmag2sig使用MATLAB®函数规范计算矩阵范数。有关STFT及其逆的更多信息,请参见短时傅里叶变换逆短时傅里叶变换

参考文献

[1] Griffin, Daniel W.和Jae S. Lim。基于改进短时傅里叶变换的信号估计IEEE声学、语音和信号处理汇刊.第32卷,第2期,1984年4月,236-243页。https://doi.org/10.1109/TASSP.1984.1164317。

[2] Perraudin, Nathanaël, Peter Balazs和Peter L. Søndergaard。"快速Griffin-Lim算法"在2013 IEEE信号处理在音频和声学中的应用研讨会2013年10月20-23日,纽约新帕尔茨。https://doi.org/10.1109/WASPAA.2013.6701851。

[3] Le Roux, Jonathan, Hirokazu Kameoka, Nobutaka Ono和Shigeki Sagayama。基于谱图一致性的幅度短时傅里叶变换谱图快速重构在第十三届国际数字音频效果会议论文集(DAFx-10)2010年9月6-10日,奥地利格拉茨。

扩展功能

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

另请参阅

功能

介绍了R2020b