- Band RMS now uses direct Parseval: sqrt(sum(|FFT|²) / N⁴ / hann_power) - Previous approach had dimensional mismatch (cycles/apt vs cycles/mm) - Results now match Zernike filtered RMS within ~10%: 40° vs 20°: PSD=6.18nm vs Zernike=7.70nm 60° vs 20°: PSD=15.83nm vs Zernike=17.69nm 90° Abs: PSD=27.01nm vs Zernike=22.33nm - PSD plot curve uses separate normalization (shape, not absolute) - Refactored compute_surface_psd to return dict with freqs, psd, bands
62 KiB
62 KiB