function [X1 X2] = fft_split(X)
x = x1 + 1i*x2;
X = fft(x);
X1 = fft(x1);
X2 = fft(x2);
This operation is useful when the FFTs of two real-valued sequences have to be computed at the same time, on a platform with limited resources, for example a small DSP or FPGA.
This operation can also be useful when the FFT of a real sequence of length 2N shall be computed with only one FFT of length N.
The standard FFT algorithm requires a complex input sequence. If only real input data is available, the simplest approach for computing the FFT is to set the imaginary part of the input sequence to zero, but this wastes computational resources. The more efficient approach, if only a complex FFT algorithm is available, is to form a complex input sequence by taking one half of the input data as the real part of the input sequence and the second half of the input data as the imaginary part of the input sequence. The FFT can then be performed on a sequence of half the length of the input data. The resulting output of the FFT can be split afterwards to obtain the FFT of the original real input data.
The script fft_split_tb.m in the zip file contains a testbench for the function fft_split.m that demonstrates the correct usage.
Implementing Fast Fourier Transform Algorithms of Real-Valued Sequences With the TMS320 DSP Platform
Texas Instruments Application Report SPRA291 - August 2001
Patrick Fleischmann (2023). fft_split.m Split the FFT of two real sequences (https://www.mathworks.com/matlabcentral/fileexchange/35410-fft_split-m-split-the-fft-of-two-real-sequences), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!