Paper: Time-Frequency Mode Decomposition: A Morphological Segmentation Framework for Signal Analysis (arXiv 2025)
MATLAB implementation of Time-Frequency Mode Decomposition (TFMD) - a morphological segmentation framework for automatic multicomponent signal analysis.
TFMD decomposes complex signals into individual components by treating signal decomposition as an image segmentation problem in the time-frequency domain. It automatically identifies and separates signal modes without knowing the number of components beforehand.
Key advantages:
- Automatic component detection (no need to specify number of modes)
- Noise robust (SNR: 10-40 dB)
- Fast (2nd fastest among benchmark methods)
- High accuracy in mode reconstruction
% Run test suite on 6 synthetic signals
test;fs = 1000; % Sampling frequency
signal = your_signal; % Your signal data
[modes, reconstructed] = tfmd(signal, fs);opts.G = 128; % Window length
opts.alpha = 2.5; % Gaussian shape
opts.rho = 0.90; % Overlap ratio
opts.beta = 0.5; % Expansion factor
opts.sigma = 1e-3; % Size filter threshold
[modes, reconstructed] = tfmd(signal, fs, opts);| File | Description |
|---|---|
tfmd.m |
Core TFMD algorithm (~150 lines) |
generate_signal.m |
Generate 6 test signals (~120 lines) |
test.m |
Complete test suite (~130 lines) |
TFMD works in 6 steps:
- STFT - Transform to time-frequency domain
- K-means - Identify high-energy regions
- CCL - Label connected components
- Filter - Remove noise artifacts
- ICD - Expand masks competitively
- ISTFT - Reconstruct individual modes
| Symbol | Parameter | Default | Description |
|---|---|---|---|
| Window length | 128 | STFT window size (samples) | |
| Shape parameter | 2.5 | Gaussian window shape | |
| Overlap ratio | 0.90 | STFT window overlap | |
| Expansion factor | 0.5 | ICD mask expansion | |
| Size threshold | 1e-3 | Minimum component size |
- Closely spaced frequencies: Reduce
alphato 1.5-2.0 - High noise: Reduce
betato 0.2-0.3 - Low noise: Increase
betato 0.8-1.0
- MATLAB R2020a or later
- Signal Processing Toolbox (for
stft,istft) - Image Processing Toolbox (for
bwlabel) - Statistics Toolbox (for
kmeans)
fs = 1000;
t = (0:1/fs:1-1/fs)';
signal = sin(2*pi*100*t) + 0.8*sin(2*pi*200*t);
[modes, recon] = tfmd(signal, fs);
fprintf('Found %d modes\n', length(modes));
% Output: Found 2 modes@article{zhou2025tfmd,
title={Time-Frequency Mode Decomposition: A Morphological Segmentation Framework for Signal Analysis},
author={Zhou, Wei and Li, Wei-Jian and Zhu, Desen and Xu, Hongbin and Ren, Wei-Xin},
year={2025},
eprint={2507.11919},
archivePrefix={arXiv},
primaryClass={eess.SP}
}Zhou et al. (2022). Empirical Fourier decomposition. Mech. Syst. Signal Process., 163, 108155.