fft
函数keras.ops.fft(x)
计算输入张量最后一个轴上的快速傅里叶变换。
参数
返回
一个包含两个张量的元组 - 输出张量的实部和虚部。
示例
>>> x = (
... keras.ops.convert_to_tensor([1., 2.]),
... keras.ops.convert_to_tensor([0., 1.]),
... )
>>> fft(x)
(array([ 3., -1.], dtype=float32), array([ 1., -1.], dtype=float32))
fft2
函数keras.ops.fft2(x)
计算输入张量最后两个轴上的 2D 快速傅里叶变换。
参数
返回
一个包含两个张量的元组 - 输出的实部和虚部。
示例
>>> x = (
... keras.ops.convert_to_tensor([[1., 2.], [2., 1.]]),
... keras.ops.convert_to_tensor([[0., 1.], [1., 0.]]),
... )
>>> fft2(x)
(array([[ 6., 0.],
[ 0., -2.]], dtype=float32), array([[ 2., 0.],
[ 0., -2.]], dtype=float32))
rfft
函数keras.ops.rfft(x, fft_length=None)
计算输入张量最后一个轴上的实值快速傅里叶变换。
计算实值信号在输入张量最内层维度上的 1D 离散傅里叶变换。
由于实值信号的离散傅里叶变换是 Hermitian 对称的,因此 RFFT 仅返回 FFT 的 fft_length / 2 + 1
个唯一分量:零频项,后跟 fft_length / 2
个正频项。
沿着 RFFT 计算的轴,如果 fft_length
小于输入的相应维度,则会裁剪该维度。如果较大,则用零填充该维度。
参数
x
最后一个轴的长度推断。默认为 None
。返回
一个包含两个张量的元组 - 输出的实部和虚部。
示例
>>> x = keras.ops.convert_to_tensor([0.0, 1.0, 2.0, 3.0, 4.0])
>>> rfft(x)
(array([10.0, -2.5, -2.5]), array([0.0, 3.4409548, 0.81229924]))
>>> rfft(x, 3)
(array([3.0, -1.5]), array([0.0, 0.8660254]))
stft
函数keras.ops.stft(
x, sequence_length, sequence_stride, fft_length, window="hann", center=True
)
计算输入张量最后一个轴上的短时傅里叶变换。
STFT 计算输入短重叠窗口的傅里叶变换。这给出了信号的频率分量随时间的变化。
参数
sequence_length
的最小 2 的幂。None
。如果 window
是字符串,则可用值为 "hann"
和 "hamming"
。如果 window
是张量,它将直接用作窗口,并且其长度必须为 sequence_length
。如果 window
为 None
,则不使用窗口。默认为 "hann"
。x
,以便第 t 个序列在时间 t * sequence_stride
处居中。否则,第 t 个序列在时间 t * sequence_stride
处开始。默认为 True
。返回
一个包含两个张量的元组 - STFT 输出的实部和虚部。
示例
>>> x = keras.ops.convert_to_tensor([0.0, 1.0, 2.0, 3.0, 4.0])
>>> stft(x, 3, 2, 3)
(array([[0.75, -0.375],
[3.75, -1.875],
[5.25, -2.625]]), array([[0.0, 0.64951905],
[0.0, 0.64951905],
[0.0, -0.64951905]]))
irfft
函数keras.ops.irfft(x, fft_length=None)
计算最后一个轴上的逆实值快速傅里叶变换。
计算实值信号在输入张量最内层维度上的 1D 离散傅里叶逆变换。
输入的最内层维度被假定为 RFFT 的结果:实值信号的 DFT 的 fft_length / 2 + 1
个唯一分量。如果未提供 fft_length
,则从输入的最内层维度的大小计算得出 (fft_length = 2 * (inner - 1))
。如果用于计算的 FFT 长度为奇数,则应提供该长度,因为它无法正确推断。
沿着 IRFFT 计算的轴,如果 fft_length / 2 + 1
小于输入的相应维度,则会裁剪该维度。如果较大,则用零填充该维度。
参数
x
最后一个轴的长度推断。默认为 None
。返回
一个张量,包含 x
最后一个轴上的逆实值快速傅里叶变换。
示例
>>> real = keras.ops.convert_to_tensor([0.0, 1.0, 2.0, 3.0, 4.0])
>>> imag = keras.ops.convert_to_tensor([0.0, 1.0, 2.0, 3.0, 4.0])
>>> irfft((real, imag))
array([0.66666667, -0.9106836, 0.24401694])
>>> irfft(rfft(real, 5), 5)
array([0.0, 1.0, 2.0, 3.0, 4.0])
istft
函数keras.ops.istft(
x,
sequence_length,
sequence_stride,
fft_length,
length=None,
window="hann",
center=True,
)
计算输入张量最后一个轴上的逆短时傅里叶变换。
要重建原始波形,参数应与 stft
中的参数相同。
参数
stft
的 FFT 的大小。应为 int32
类型。None
。None
。如果 window
是字符串,则可用值为 "hann"
和 "hamming"
。如果 window
是张量,它将直接用作窗口,并且其长度必须为 sequence_length
。如果 window
为 None
,则不使用窗口。默认为 "hann"
。x
,以便第 t 个序列在时间 t * sequence_stride
处居中。默认为 True
。返回
一个张量,包含 x
最后一个轴上的逆短时傅里叶变换。
示例
>>> x = keras.ops.convert_to_tensor([0.0, 1.0, 2.0, 3.0, 4.0])
>>> istft(stft(x, 1, 1, 1), 1, 1, 1)
array([0.0, 1.0, 2.0, 3.0, 4.0])