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])