Fourier transforms help us find the hidden repeating patterns (frequencies) inside any signal or data. This is useful because many real-world signals are made of different waves combined together.
Why Fourier transforms reveal frequencies in SciPy
from scipy.fft import fft # fft(data) computes the Fourier transform of the data array
The input data should be a list or array of numbers representing the signal over time.
The output is a complex array showing amplitude and phase for each frequency component.
from scipy.fft import fft import numpy as np # Simple sine wave x = np.sin(2 * np.pi * 5 * np.linspace(0, 1, 100, endpoint=False)) result = fft(x)
from scipy.fft import fft import numpy as np # Signal with two frequencies x = np.sin(2 * np.pi * 3 * np.linspace(0, 1, 100, endpoint=False)) + 0.5 * np.sin(2 * np.pi * 10 * np.linspace(0, 1, 100, endpoint=False)) result = fft(x)
This program creates a signal with two known frequencies, finds its Fourier transform, and prints the main frequencies with their strengths.
from scipy.fft import fft, fftfreq import numpy as np import matplotlib.pyplot as plt # Create a signal with two frequencies: 5 Hz and 20 Hz sampling_rate = 100 # samples per second T = 1 / sampling_rate # sample spacing x = np.linspace(0.0, 1.0, sampling_rate, endpoint=False) signal = np.sin(2.0 * np.pi * 5.0 * x) + 0.5 * np.sin(2.0 * np.pi * 20.0 * x) # Compute Fourier transform yf = fft(signal) xf = fftfreq(sampling_rate, T)[:sampling_rate // 2] # Get magnitude of frequencies magnitude = 2.0 / sampling_rate * np.abs(yf[0:sampling_rate // 2]) # Print main frequencies and their magnitudes for freq, mag in zip(xf, magnitude): if mag > 0.1: print(f"Frequency: {freq:.1f} Hz, Magnitude: {mag:.2f}")
The Fourier transform output is complex because it contains both amplitude and phase information.
Only half of the output frequencies are unique for real signals, so we usually look at the first half.
Higher magnitude means stronger presence of that frequency in the signal.
Fourier transforms break down signals into their frequency parts.
This helps us see which frequencies make up the signal.
It is useful for analyzing sounds, vibrations, and many other real-world data.