Author: Brandon J. Woodard
Institution: Brown University
This script fits modeled laser return waveforms to NASA GEDI full-waveform LiDAR data using cubic B-splines and nonlinear least squares.
GEDI (Global Ecosystem Dynamics Investigation) is a NASA full-waveform
LiDAR instrument aboard the International Space Station.
It measures forest vertical structure by recording transmitted and
returned laser pulse energy over nanoseconds.
- Loads GEDI waveform CSV data\
- Builds cubic B-spline models of signals
(
scipy.interpolate.splrep, k=3)\ - Convolves transmit pulse with a Gaussian\
- Fits modeled signal to GEDI return waveform\
- Estimates:
- Vertical & horizontal shifts
- Scaling parameters
- Peak locations
- Goodness-of-fit (Chi-square)
Install dependencies:
pip install numpy scipy matplotlib pandas scikit-learn numba- Place your GEDI waveform CSV in the same directory.
- Set filename in the script:
filename = "your_file.csv"- Run:
python script_name.pyThe script will:
- Plot the GEDI return waveform
- Plot the fitted model
- Print fitted parameters and chi-square error
The modeled return signal:
R(t) = vs + vsc · Spline(hsc · t + hs)
Where parameters control vertical shift, horizontal shift, and scaling.
The transmit pulse is convolved with a Gaussian to approximate system broadening.
- Uses cubic B-splines (not raw waveforms).
- Designed for GEDI-like CSV waveform exports.
- Intended for research / signal analysis experimentation.

