本文簡要介紹python語言中 torch.fft.fftshift
的用法。
用法:
torch.fft.fftshift(input, dim=None) → Tensor
重新排序由
fftn()
提供的 n 維 FFT 數據,使其首先具有負頻率項。這將執行 n 維數據的周期性移位,以便將原點
(0, ..., 0)
移動到張量的中心。具體來說,到每個選定維度中的input.shape[dim] // 2
。注意
按照慣例,FFT 首先返回正頻率項,然後按相反順序返回負頻率項,因此 Python 中所有
f[-i]
給出負頻率項。fftshift()
將所有頻率重新排列為從負到正的升序,zero-frequency 項位於中心。 的注意
對於偶數長度,
f[n/2]
處的奈奎斯特頻率可以被視為負或正。fftshift()
始終將奈奎斯特項放在 0 索引處。這與fftfreq()
使用的約定相同。示例
>>> f = torch.fft.fftfreq(4) >>> f tensor([ 0.0000, 0.2500, -0.5000, -0.2500])
>>> torch.fft.fftshift(f) tensor([-0.5000, -0.2500, 0.0000, 0.2500])
另請注意,
f[2]
處的奈奎斯特頻率項已移至張量的開頭。這也適用於多維變換:
>>> x = torch.fft.fftfreq(5, d=1/5) + 0.1 * torch.fft.fftfreq(5, d=1/5).unsqueeze(1) >>> x tensor([[ 0.0000, 1.0000, 2.0000, -2.0000, -1.0000], [ 0.1000, 1.1000, 2.1000, -1.9000, -0.9000], [ 0.2000, 1.2000, 2.2000, -1.8000, -0.8000], [-0.2000, 0.8000, 1.8000, -2.2000, -1.2000], [-0.1000, 0.9000, 1.9000, -2.1000, -1.1000]])
>>> torch.fft.fftshift(x) tensor([[-2.2000, -1.2000, -0.2000, 0.8000, 1.8000], [-2.1000, -1.1000, -0.1000, 0.9000, 1.9000], [-2.0000, -1.0000, 0.0000, 1.0000, 2.0000], [-1.9000, -0.9000, 0.1000, 1.1000, 2.1000], [-1.8000, -0.8000, 0.2000, 1.2000, 2.2000]])
fftshift()
對於空間數據也很有用。如果我們的數據是在中心網格 ([-(N//2), (N-1)//2]
) 上定義的,那麽我們可以通過首先應用ifftshift()
來使用在非中心網格 ([0, N)
) 上定義的標準 FFT。>>> x_centered = torch.arange(-5, 5) >>> x_uncentered = torch.fft.ifftshift(x_centered) >>> fft_uncentered = torch.fft.fft(x_uncentered)
類似地,我們可以通過應用
fftshift()
將頻域分量轉換為居中約定。>>> fft_centered = torch.fft.fftshift(fft_uncentered)
從中心傅立葉空間回到中心空間數據的逆變換可以通過以相反的順序應用反向移位來執行:
>>> x_centered_2 = torch.fft.fftshift(torch.fft.ifft(torch.fft.ifftshift(fft_centered))) >>> torch.testing.assert_close(x_centered.to(torch.complex64), x_centered_2, check_stride=False)
參數:
相關用法
- Python PyTorch fft2用法及代碼示例
- Python PyTorch fftn用法及代碼示例
- Python PyTorch fftfreq用法及代碼示例
- Python PyTorch fft用法及代碼示例
- Python PyTorch frexp用法及代碼示例
- Python PyTorch flip用法及代碼示例
- Python PyTorch frombuffer用法及代碼示例
- Python PyTorch float_power用法及代碼示例
- Python PyTorch floor_divide用法及代碼示例
- Python PyTorch fractional_max_pool3d用法及代碼示例
- Python PyTorch frac用法及代碼示例
- Python PyTorch freeze用法及代碼示例
- Python PyTorch fp16_compress_hook用法及代碼示例
- Python PyTorch fake_quantize_per_channel_affine用法及代碼示例
- Python PyTorch flipud用法及代碼示例
- Python PyTorch fliplr用法及代碼示例
- Python PyTorch fp16_compress_wrapper用法及代碼示例
- Python PyTorch fractional_max_pool2d用法及代碼示例
- Python PyTorch from_numpy用法及代碼示例
- Python PyTorch filter_wikipedia_xml用法及代碼示例
- Python PyTorch fuse_modules用法及代碼示例
- Python PyTorch fasterrcnn_mobilenet_v3_large_320_fpn用法及代碼示例
- Python PyTorch fmax用法及代碼示例
- Python PyTorch fork用法及代碼示例
- Python PyTorch fmin用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.fft.fftshift。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。