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’.

Common Window Types in Vibration Analysis

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.