matlab library for ppg signal quality assesment This project aims to compute Signal Quality Indices (SQIs) for photoplethysmogram (PPG) signals collected at 100Hz. The SQIs are calculated based on definitions provided in the relevant literature to assess the quality of PPG signals, which are crucial for accurate physiological measurements.
The project is organized as follows:
ppg_quality_assessment
├── src
│ ├── compute_sqi.m % Script to compute SQIs for raw PPG signals
│ ├── utils % Directory containing utility functions for SQI calculations
│ │ ├── perfusion_sqi.m % Function to calculate perfusion SQI
│ │ ├── skewness_sqi.m % Function to compute skewness SQI
│ │ ├── kurtosis_sqi.m % Function to calculate kurtosis SQI
│ │ ├── entropy_sqi.m % Function to compute entropy SQI
│ │ ├── relative_power_sqi.m % Function to calculate relative power SQI
│ │ ├── zero_crossing_sqi.m % Function to compute zero-crossing SQI
│ │ ├── non_stationarity_sqi.m % Function to assess non-stationarity SQI
│ │ └── matching_systolic_sqi.m % Function to calculate matching systolic SQI
│ └── main.m % Main entry point for the project
├── data
│ ├── raw % Directory for raw PPG signal data files
│ └── processed % Directory for processed PPG data files
├── results
│ └── tables % Directory for saving resulting tables with computed SQIs
└── README.md % Documentation for the project
To run this project, ensure you have MATLAB installed. Clone or download the repository to your local machine.
- Place your raw PPG signal data files in the
data/rawdirectory. - Open the
main.mscript in MATLAB. - Run the
main.mscript to process the PPG data and compute the SQIs. - The results will be saved in the
results/tablesdirectory.
The following Signal Quality Indices (SQIs) are computed:
- Perfusion SQI: Assesses the ratio of pulsatile blood flow to static blood in peripheral tissue.
- Perfusion Index SQI: Calculates the ratio of AC to DC component of the PPG signal.
- Skewness SQI: Measures the asymmetry of the signal distribution.
- Kurtosis SQI: Evaluates the "tailedness" of the signal distribution.
- Entropy SQI: Quantifies the complexity or unpredictability of the PPG signal.
- Shannon Entropy SQI: Measures information content using Shannon's definition of entropy.
- Approximate Entropy SQI: Quantifies the unpredictability of time series data.
- Spectral Entropy SQI: Measures the entropy of the power spectrum distribution.
- Relative Power SQI: Evaluates the power distribution of the signal across different frequency bands.
- Band Power SQI: Calculates power in different frequency bands (total, low, high).
- Power Ratio SQI: Computes the ratio of high to low frequency power.
- Dominant Frequency SQI: Identifies the frequency with maximum power and its magnitude.
- Zero-Crossing SQI: Counts the number of times the signal crosses the zero line.
- Non-Stationarity SQI: Assesses how the statistical properties of the signal change over time.
- Matching Systolic SQI: Evaluates the accuracy of detected systolic waves in the PPG signal.
- SNR SQI: Calculates the Signal-to-Noise Ratio in decibels.
- Autocorrelation SQI: Measures the self-similarity of the signal at different time lags.
- Template Matching SQI: Compares signal pulses to template shapes.
- Hjorth Parameters SQI: Calculates activity, mobility, and complexity parameters.
- Statistical SQI: Includes Mean Absolute Deviation, Variance, and Coefficient of Variation.
Contributions to improve the project are welcome. Please submit a pull request or open an issue for discussion.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.