NOTES¶
FDD — Frequency Domain Decomposition: SVD Separates Modes from Noise
Build cross-power spectral density (CPSD) matrices at each frequency bin, perform SVD. The first singular value (SV1) spectrum peaks at modal frequencies; the corresponding left singular vector gives the mode shape.
Intuition¶
Why SVD Can Separate Modes¶
At a natural frequency, the structure's response is dominated by that mode. The cross-spectral matrix is approximately rank 1:
- \(\sigma_1\) = first singular value → modal "energy" → SV1 spectrum
- \(\mathbf{u}_1\) = first singular vector → mode shape
SVD automatically separates signal from noise into different subspaces. This is why FDD is much more noise-robust than PP.
FDD vs PP¶
| PP | FDD | |
|---|---|---|
| Frequency source | Averaged auto-PSD | SV1 spectrum (SVD of CPSD) |
| Mode shapes | sqrt(PSD[ch]) | SVD left singular vector |
| Noise immunity | Fair | Strong |
| Close modes | Can't separate | Higher-order SVs help |
Algorithm¶
1. Welch-averaged CPSD G[:,:,k]
├─ segment FFT → cross-spectra → average
2. For each frequency k:
├─ SVD(G[:,:,k]) → σ₁, u₁
├─ SV1[k] = σ₁
└─ mode_shape[:, k] = u₁
3. Peak detection on SV1 spectrum
4. Extract shapes at peaks → normalize → dedup
When to Use FDD¶
- More reliable frequencies/shapes than PP
- Noisy data (SVD automatically denoises)
- ≥ 30s data for good resolution
Design Deep Dive¶
1. CPSD Matrix vs Independent PSD¶
FDD uses the cross-power spectral density matrix, not auto-PSD. At modal frequencies, the CPSD matrix is approximately rank-1. SVD concentrates signal energy into the first singular value, spreading noise across higher orders—this is the mathematical foundation of FDD's noise immunity over PP.
2. Power Iteration SVD Choice¶
FDD only needs the dominant SV/vector. Power iteration costs O(k·n²) with k≈15 iterations → ~375 FLOP for a 5×5 CPSD matrix. Jacobi full SVD would cost O(n³) → ~500 FLOP. Power iteration is optimal when only the dominant SV is needed.
3. Why seg_len=1024 vs PP's n/3¶
PP needs more segments (≥3) for stable PSD estimation. FDD uses CPSD whose cross-segment variance is smaller, allowing fewer segments (~2) with longer seg_len for better frequency resolution (0.049 Hz vs 0.098 Hz).
4. Memory¶
CPSD buffer: 1024bins × n_ch². For 5ch: 100 KB (fits SRAM). For 10ch: 400 KB (use PSRAM).