AnyMath 文档

stft

的窗口化傅立叶变换。

库::`工程师`

语法

函数调用

* [参数:s]=stft(<参数:x>>) -返回输入信号的窗口傅立叶变换(OPF) [参数:x].

* [参数:s]=stft(<参数:x>>,<参数:fs>>) -返回OPF [参数:x] 与采样率 [参数:fs].

* [参数:s]=stft(<参数:x>>,<参数:ts>>) -返回OPF [参数:x] 具有采样周期 [参数:ts].

* [参数:s]=stft(___,Name,Value) -使用名称-值参数设置其他参数。 这些参数的值包括FFT的窗口和长度。 这些参数可以添加到任何先前的输入语法中。

* [参数:s],[参数:f]=stft(___) -返回频率 [参数:f],在其上计算OPF。

* [参数:s],[参数:f],[参数:t]=stft(___) -返回计算OPF的时间点。

* stft(___) -在没有输出参数的情况下,在当前图形窗口中以分贝为单位绘制OPF幅度的平方。

争论

输入参数

# *x* — 输入信号

+ 向量资料 | 矩阵

Details

指定为矢量或矩阵的输入信号。

如有需要, x[参数:s] 具有相同的长度,值 (长度(x)-noverlap)/(长度(窗口)-noverlap) 它必须是一个整数。 使用参数 [参数:窗口] 要设置长度 窗户 和论点 [参数:超长] 要问 诺弗拉普.

*如果输入数据包含多个通道,请指定 x 作为矩阵,其中每列对应于一个通道。

每个信号通道 x 它必须具有大于或等于窗口长度的长度。

数据类型

漂浮64, 漂浮物32</无翻译> 支持复数::是

# *财政司司长* — 抽样调查 费率+ (默认情况下)| 正标量

Details

的采样率,设置为正标量。

数据类型

漂浮64, 漂浮物32</无翻译>

# *ts*是 采样周期

+ 标量,标量

Details

的采样周期,设置为标量。

名称-值输入参数

将可选参数对指定为 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 名称-值参数应该放在其他参数之后,但对的顺序无关紧要。

使用逗号分隔名称和值,以及 姓名 把它放在引号里。

# *窗口* — 光谱窗口

+ 汉恩(128,"周期性") (默认)| 向量资料

Details

定义为矢量的频谱窗口。 如果论点是 窗户 未指定或设置为空,该函数使用长度为零的窗口 128. 参数的长度 窗户 必须大于或等于 2.

有关可用窗口的列表,请参阅 Windows - window functions.

数据类型

漂浮64, 漂浮物32</无翻译>

# *超长* — 重叠样本的数目

+ 窗口长度的75% (默认情况下)| 一个非负整数

Details

重叠样本数,设为小于自变量长度的正整数 [参数:窗口]. 如果论点是 超长,超长 省略或为空,函数使用小于的最大整数 75 窗口长度的%,即 96 汉纳窗口没有默认计数。

数据类型

漂浮64, 漂浮物32</无翻译>

# *FFTLength* — DFT点数

+ 128 (默认情况下)| 一个正整数

Details

DFT点的个数,设为正整数。 值必须大于或等于窗口长度。 如果输入信号的长度小于DFT的长度,则用零填充数据。

数据类型

漂浮64, 漂浮物32</无翻译>

# *频率范围* — OPF的频率范围

+ "居中" (默认情况下)| "twosided" | "onesided"

Details

OPF的频率范围,设为 "居中", "twosided""onesided".

* "居中" -计算双向居中OPF。 如果参数的值为 [参数:FFTLength] 甚至,然后 [参数:s] 区间计算 rad/倒计时。 如果参数的值为 [参数:FFTLength] 如果是奇数,那么 [参数:s] 区间计算 rad/倒计时。 如果指定了时间信息,则间隔为 每单位时间的周期和 每单位时间的周期,分别,其中 -有效采样率。

* "twosided" -计算区间内的双向OPF rad/倒计时。 如果指定了时间信息,则间隔为 每单位时间的周期。

* "onesided" -计算单向OPF。 如果参数的值为 [参数:FFTLength] 甚至,然后 [参数:s] 区间计算 rad/倒计时。 如果参数的值为 [参数:FFTLength] 如果是奇数,那么 [参数:s] 区间计算 rad/倒计时。 如果指定了时间信息,则间隔为 每单位时间的周期和 每单位时间的周期,分别,其中 -有效采样率。 此选项仅对真实信号有效。

如果此参数设置为 "onesided",功能 *stft* 输出正奈奎斯特波段的值,不节省总功率。
数据类型

查尔, 字符串</无翻译>

# *输出时间* — 输出的时间测量

+ "acrosscolumns" (默认)| "downrows"

Details

输出的时间维度,设置为 "acrosscolumns""downrows". 设置值 "downrows" 如果需要时间维度 [参数:s] 它以行显示,频率值以列显示。 设置值 "acrosscolumns" 如果需要时间维度 [参数:s] 它以列显示,频率值以行显示。 如果调用不带输出参数的函数,则忽略此输入参数。

# *出* — 输出数据的类型

+ :数据 (默认情况下)| :剧情

Details

输出数据的类型:

* :数据 -函数返回数据; * :剧情 -函数返回一个图形。

输出参数

# *s* — 窗口傅立叶 变换+ 矩阵 | 三维阵列

Details

作为矩阵或三维阵列返回的窗口化傅立叶变换。 时间按列增加 s,并且频率以行为单位。 如果存在第三个维度,则对应于输入通道。

*如果信号是 [参数:x] 时间算数,那么 s 列在哪里 , -参数的长度 [参数:窗口], -参数的长度 [参数:超长],以及符号 表示向下舍入到最接近的整数的函数( ).

*行数 s 等于参数中指定的值 [参数:FFTLength].

数据类型

漂浮64, 漂浮物32</无翻译>

# *f* — 频率

+ 向量资料

Details

计算OPF的频率,作为向量返回。

数据类型

漂浮64, 漂浮物32</无翻译>

# *t* — 时间 积分+ 向量资料

Details

返回的时间点作为向量。 论点 t 包含与用于计算加窗功率谱的估计的数据段的中心相对应的时间值。

*如果指定了采样率 [参数:fs],则向量包含以秒为单位的时间值。

*如果指定了采样周期 [参数:ts],则该向量是与输入数据具有相同时间格式的数组。

*如果未指定时间信息,则向量包含样本的编号。

数据类型

漂浮64, 漂浮物32</无翻译>

例子:

二次线性调频的窗口傅立叶变换

Details

我们将产生一个具有采样频率的二次线性调频信号 1 千赫持续时间 2 c.瞬时频率为 100 Hz在 200 Hz在 和。

import EngeeDSP.Functions: chirp

ts = 0:1/1e3:2

f0 = 100
f1 = 200

x = chirp(ts, f0, 1, f1, "quadratic", 0, "concave");

计算并显示持续时间为 1 小姐。

import EngeeDSP.Functions: hamming, stft

fs = 1e3
win = hamming(100, "periodic")

stft(x, fs, "Window", win, "OverlapLength", 98, "FFTLength", 128, out=:plot)

stft

此外

窗口傅立叶变换

Details

窗口化傅立叶变换(OPF)用于分析非平稳信号的频谱随时间的变化。 OPF的幅度的平方称为信号_spectrogram_在时频域中的表示。

通过移动分析的_窗口来计算信号的OPF_ 长度 基于所述信号和所述离散傅立叶变换(dft)的窗口数据的每个段的计算。 窗口根据原始信号移位,间隔为 计数,这相当于 相邻段之间的重叠计数。 大多数窗口函数向边缘逐渐变细,以避免吉布斯效应。 每个窗口段的DFT被添加到包含每个时间点和频率的幅度和相位的复数矩阵中。 OPF矩阵具有

列在哪里 -信号长度 ,以及符号 表示函数 . 矩阵中的行数为 ,即DFT点的数量,用于居中和双面变换,以及接近奇数 ,用于实信号的单向变换。

在OPF矩阵 -第列

包含相对于时间居中的窗口数据的DFT :

stft cn

文学作品

  1. Mitra,Sanjit K. _Digital Signal Processing:A Computer-Based Approach。_第二版。 繝シ繝ォ縺ァ縺呐

  2. 夏普,布鲁斯。 重叠的可转换性-添加处理。 https://gauss256.github.io/blog/cola.html 2019年7月访问。

  3. 史密斯,朱利叶斯*猎户座。 光谱音频信号处理。 https://ccrma.stanford.edu/~jos/sasp/ 2011年11月20日,在线图书,2011年版,2018年11月访问。