STFT时频图
- 更新时间2025-07-30
- 阅读时长7分钟
根据短时傅立叶变换(STFT)算法,计算联合时频域中信号的能量分布。

输入/输出
时频配置
—
时频配置指定频率区间的配置。时频配置还可确定STFT时频图{X}的列数。
X
—
X指定输入的时域信号。
时频采样信息
—
时频采样信息指定用于对联合时频域中的信号进行采样的密度以及输出的二维时频数组的大小。
窗信息
—
窗信息指定用于计算STFT窗的信息。
窗参数
—
窗参数是Kaiser窗的beta参数、高斯窗的标准差,或Dolph-Chebyshev窗的主瓣与旁瓣的比率s。如窗类型是其它窗,VI可忽略该输入。 窗参数的默认值是NaN,可设置Kaiser窗的beta参数为0、高斯窗的标准差为
能量守恒?
—
能量守恒指定是否缩放STFT时频图{X},用于保证联合时频域中的能量与时域中的能量相等。默认值为TRUE。
STFT时频图{X}
—
STFT时频图{X}该二维数组用于描述联合时频域中的时间波形能量分布。
错误
—
错误返回VI的任何错误或警告。将错误连接至错误代码至错误簇转换VI,可将错误代码或警告转换为错误簇。 |
计算STFT时频图{X}之前,VI先计算X的STFT。VI通过滑动窗使信号分解为多个数据快,得到X的STFT。然后,VI通过对每个数据块进行N点快速傅立叶变换获取每个数据块中的频率信息,N是频率区间。STFT使用第一个滑动窗的中间作为信号X的第一个采样,并通过在信号的开始部分添加0扩展信号。然后,滑动窗可移动时间步长个采样,到达下一个数据块。如滑动窗移出信号X,该VI使用0对信号X进行填充。
下图为该VI计算STFT的示意图。

如强制频率区间为2的幂?的值为TRUE,频率区间不是2的幂,可使用下列方程:
K = 2[log2(频率区间)][ ]是最近整数运算。
否则,K = 频率区间。
如STFT运算的结果是STFT{X}矩阵,STFT{X}为M行-K列,则下列等式成立:

- L是X中元素的数量
是向下取整运算
通过下列方程可用STFT{X}逼近联合时频域的能量:

结果几乎与时域中的能量相同。如下列表达式所示:

VI先计算X的STFT,然后计算X的STFT时频图。VI通过计算STFT{X}中元素的幅度平方得到STFT时频图。由于FFT返回对称的结果,VI只需计算STFT{X}左边的STFT时频图{X}。如下列方程所示:

下列等式成立:
- i = 0,1,..., M-1
- j = 0,1,..., N-1

是向上取整运算。
如时间步长的值较小,则VI返回的时频图可能较大,需要较长的计算时间和大量的内存。NI建议设置的时间步长值不能使谱图中的行数大于512。如需使用较小的采样率获取更多详细信息,在信号长度较大时,可使信号划分为较小的部分,分别计算每个部分的时频图。
窗的长度可影响STFT的时间精度和频率精度。较窄的窗的持续时间较短、带宽较大,可得到更好的时间精度,但频率精度不理想。较宽的窗的持续时间较长、带宽较窄,可得到更好的频率精度,但时间精度不理想。
如果将 " force freq bins to power of 2?"、" exclude Nyquistfrequency? "和 " energy conservation? "设置 为"TRUE",则该 VI 返回的结果与 LabVIEW 高级信号处理工具包中的 TFA STFT Spectrogram VI 相同。
范例
请参考LabVIEW附带的下列范例文件。
- labview\examples\Signal Processing\Transforms\STFT Spectrogram Demo.vi
时频配置
—
强制频率区间为2的幂?
—
X
—
时频采样信息
—
时间步长
—
类型
—
窗参数
—
,或设置Dolph-Chebyshev窗的s为60。L是窗的长度。
STFT时频图{X}
—
错误
—