Conversion to frequency domain
The Signal Processing Tool transforms time-domain signal data into frequency-domain data using FFT (Fast Fourier Transform), with optional filtering and windowing. Refer to theoretical background of FFT for more background information on the procedure.
The conversion is performed using the method
convert_to_frequency_domain().
This method creates a new FrequencyDomainData object in the frequency collection with the same name as the time domain
collection as the original TimeDomainData object. The method provides options for windowing and filtering the signal
before performing the FFT.
frequency_data = time_domain_data.convert_to_frequency_domain()
Note
When the signal does not contain complex numbers, the real FFT (rFFT) is used for efficiency.
Window type
Windowing is the process of multiplying a time-domain signal by a window function before performing an FFT. The window function is typically a smooth curve (like a Hann or Hamming window) that tapers the signal at the edges. When you take a finite-length segment of a signal and apply FFT, you’re implicitly assuming that the signal is periodic; that it repeats seamlessly. But in reality, most signals don’t end and start at the same value, which causes discontinuities at the boundaries. These discontinuities introduce spectral leakage;unwanted spreading of energy across frequencies in the FFT result.
Windowing helps by reducing edge discontinuities (it smooths the start and end of the signal), minimising spectral leakage (it concentrates energy around the true frequency components) and improves frequency resolution (some windows trade off leakage for better resolution).
The Signal Processing Tool supports several window types for FFT. You can specify the window type using the
window_type parameter in the above mentioned method. The available window types are ‘Bartlett’, ‘Blackman’,
‘Boxcar’ (no windowing, also ‘Rectangular’ specifies no window), ‘Flattop’, ‘Gaussian’, ‘Hann’ (‘Hanning’ is
used in Numpy, but corresponds to ‘Hann’ as used in SciPy), ‘Hamming’ or ‘Kaiser’.
Window Type |
Leakage Suppression |
Frequency Resolution |
Amplitude Accuracy |
Common Use |
|---|---|---|---|---|
Bartlett |
Good |
Moderate |
Moderate |
Lightweight alternative to Hann for basic smoothing |
Blackman |
Excellent |
Poor |
Good |
Low-amplitude signals |
Boxcar / Rectangular / No window |
Poor |
Best |
Poor |
Ideal only for perfectly periodic signals |
Flat Top |
Excellent |
Poor |
Best |
Amplitude measurement |
Gaussian (σ=7.0) |
Excellent |
Very Poor |
Good |
Specialized use in noise shaping and time-frequency analysis |
Hamming |
Good |
Moderate |
Better than Hann |
Similar to Hann, slightly better amplitude |
Hann / Hanning |
Good |
Good |
Moderate |
General vibration analysis |
Kaiser (β=14) |
Very Good |
Poor to Moderate |
Good |
Tunable window for balancing leakage and resolution |
Refer to theoretical background of windowing for more details.
frequency_data = time_domain_data.convert_to_frequency_domain(window_type='Hanning')
Filtering
When providing input parameters for filtering, the method
apply_filter_to_signal() is used
to apply filtering. It applies a highpass and/or lowpass filter to a time-domain signal to remove unwanted frequency
components, such as noise or drift.
frequency_domain_data = time_domain_data.convert_to_frequency_domain(highpass_limit=0.5, lowpass_limit=50.0)
Refer to theoretical background of filtering for more details.
Octaves
The method octaves_from_tdd()
computes octave or third-octave band levels from time-domain data by first converting it to the frequency domain. By
default the function calculates standard octave bands, which group frequencies more broadly and are suitable for
general-purpose analysis or quick overviews. Selecting third-octave is useful for detailed analysis and applications
requiring compliance with standards like ISO or ANSI.
bands = time_domain_data.octaves_from_tdd(third_octave=True, level_type='RMS', window_type='Hann', averaging='1s')
Different options are available for the user to select the method to compute the level of each frequency band:
RMS: Calculates the Root Mean Square value of the signal in each band. This is the most common method for measuring continuous signal energy and is suitable for most acoustic and vibration analyses. This has also been selected as the default option.
peak: Uses the maximum amplitude within each band. Useful for identifying transient or impulsive events.
energy: Computes the total energy in each band, integrating the squared amplitude over time. Appropriate for signals where energy content is more relevant than amplitude.
power: Calculates the average power in each band, typically normalised over time. Useful in power spectral density analyses.