torch fft 幅值相位
Torch FFT: Amplitude and Phase Analysis
Introduction
Fast Fourier Transform (FFT) is a widely used algorithm in signal processing and image analysis. It allows us to convert a time-domain signal into its frequency-domain representation by decomposing it into different sinusoids. The Torch library provides different functions to perform FFT and analyze the amplitude and phase components of the transformed signal. In this article, we will explore the Torch FFT functions and understand how to extract amplitude and phase information from a signal.
Part 1: Torch FFT Basics
Before diving into the amplitude and phase analysis, let's understand the basics of Torch FFT. The torch.fft module provides several functions to perform FFT operations, including torch.fft.fft, torch.fft.ifft, and torch.fft.rfft. These functions take input tensors and return comple
x or real numbers depending on the function.
For example, torch.fft.fft function performs a 1-D FFT on the last dimension of the input tensor and returns a complex tensor. On the other hand, torch.fft.rfft function is used for input tensors with real values and returns a real tensor containing the positive frequency components.
Let's start with an example to understand the process better. Consider a 1-D signal represented by a tensor in Torch.
python
import torch
import matplotlib.pyplot as plt
# Input signal
signal = sor([1.0, 2.0, 1.0, -1.0, -2.0, -1.0])
# Perform FFT
fft = torch.fft.fft(signal)
In this code snippet, we define a 1-D signal tensor with six values. We then use the torch.fft.fft function to compute the FFT of the signal. The resulting fft tensor will contain complex numbers representing the frequency domain representation of the input signal.
Part 2: Amplitude Analysis
Now that we have obtained the frequency domain representation of our signal, let's focus on the amplitude analysis. The amplitude spectrum represents the strength or magnitude of each frequency component in the signal.
To extract the amplitude information from the FFT spectrum, we take the absolute value (magnitude) of the complex numbers. In Torch, we can use the torch.abs function to achieve this.
python
# Extract amplitude spectrum
amplitude_spectrum = torch.abs(fft)
By applying the torch.abs function on the fft tensor, we get the amplitude spectrum of our input signal. This amplitude spectrum provides us with information about the strength of each frequency component.
Part 3: Phase Analysis
In addition to the amplitude information, the phase spectrum represents the relative timing or phase shift of each frequency component in the signal. To extract the phase information, we need to compute the phase angle of each complex number.
In Torch, we can use the torch.angle function to obtain the phase angle. The phase angles are returned in radians.
python
# Extract phase spectrum
phase_spectrum = torch.angle(fft)
By applying the torch.angle function on the fft tensor, we obtain the phase spectrum of our input signal. This phase spectrum represents the relative timing or phase shift of each frequency component.
Part 4: Visualizing Amplitude and Phase Spectra
To better understand the amplitude and phase spectra, let's visualize them using matplotlib.
python
# Plot amplitude spectrum
plt.subplot(2, 1, 1)
plt.plot(amplitude_spectrum)
# Plot phase spectrum
plt.subplot(2, 1, 2)
plt.plot(phase_spectrum)
# Display the plot
plt.show()
In this code snippet, we use the matplotlib library to create two subplots in a single figure. We plot the amplitude spectrum in the first subplot and the phase spectrum in the second subplot. Finally, we display the plot to visualize the spectra.