This project implements a complete MATLAB-based ECG Emotion Recognition System using the DREAMER physiological dataset.
The system extracts ECG signals, preprocesses them, detects R-peaks, computes HRV and amplitude-based features, performs FFT analysis, and classifies emotional states using percentile thresholds.
All generated plots and the final project report are included in this repository.
- ECG preprocessing (normalization + bandpass filtering)
- R-peak detection using
findpeaks() - RR interval extraction
- HRV and amplitude-based feature analysis
- FFT power spectrum analysis
- Correlation and boxplot visualizations
- Percentile-based emotion classification
- Outputs saved as high-quality plots
- DC offset removal
- Amplitude normalization
- Bandpass filtering (0.5–50 Hz)
- Detected using height + minimum RR distance constraints
- Used to compute RR intervals and amplitudes
- Peak amplitude
- RR intervals
- Moving standard deviation (for dominance)
- FFT power spectrum shows dominant ECG frequencies
- Useful for stress and arousal estimation
Generated charts include:
- Filtered ECG with R-peaks
- RR interval trend
- RR histogram
- FFT power spectrum
- Correlation matrix
- Boxplots
- Stacked emotional sub-feeling distribution
Emotions are computed using percentile thresholds:
- Happy
- Sad
- Neutral
- Excited
- Calm
- Neutral
- Confident
- Passive
- Neutral
These categories are derived using:
- Peak amplitude
- RR interval
- Moving RR standard deviation
The dataset cannot be included due to licensing.
Download from the official source:
https://zenodo.org/record/546113
The script will automatically:
- Load ECG
- Preprocess
- Detect peaks
- Extract features
- Classify emotions
- Generate and save all plots
matlab ecg_emotion_recognition.m
📄 Project PDF: ECG_Emotion_Recognition.pdf
- MATLAB: Signal processing, HRV analysis, FFT
- DREAMER Dataset: Physiological emotion data
- GitHub: Version control & documentation
- Bojja Divya
- Bhavatarini .M
- Srinithi R.M
This project is licensed under the MIT License.