I have a high resolution 3D spatial signal (xy-elevation data collected via Terrestrial Laser Scan) with very nonuniform sampling (holes/shadows due to vegetation; point spread varies as a function of distance from scanner). The original point density varies from ~0-100 pt/cm2 and has been gridded/downsampled to 1 pt/cm2. Holes can be up to a few meters wide.
I now need to calculate a 1D spatial spectrogram in Matlab (in either x or y vs elevation) without interpolating data over the holes or downsampling to the lowest sampling rate since these would introduce high frequency artifacts or decrease resolution (I'm interested in the spectral characteristics at the cm-to-m-scale). The signal is also nonstationary, so I don't think I can just use a resampling or bootstrapping method.
The built-in Matlab functions I am familiar with (
pwelch,) result in NaN output if there are any NaNs in the signal, so I'm considering using Matlab's Lomb-Scargle periodogram algorith (
plomb) in overlapping windows.
Is there another existing spectrogram method that uses least squares fitting, frequency-dependent windowing, or some other method to ignore NaNs/holes? Or is there any reason why using overlapping
plomb windows would be a poor solution here?