This desktop application is designed to illustrate the importance of the Nyquist-Shannon sampling theorem in digital signal processing. It allows users to load, sample, and recover analog signals, showing how different sampling frequencies affect signal recovery. our application offers the ability to mix, add noise, and perform real-time sampling and recovery.
- Sample Signal: Load a signal and visualize it. Users can sample it at various frequencies.
- Recover Signal: The application uses the Whittaker-Shannon interpolation formula to recover the original signal based on the sampled points.
- Visualization: Three graphs display the original signal with markers for sampled points, the reconstructed signal, and the difference between the original and reconstructed signals.
- Load Signal: Users can load a signal from a file or create a custom signal by mixing multiple sinusoidal components with different frequencies and magnitudes.
- Signal Mixer: The signal mixer allows users to add and remove single sinusoidal components to prepare a mixed signal.
- Noise Addition: Users can introduce custom noise with a controllable Signal-to-Noise Ratio (SNR) level.
- The application is designed to be easily resizable without affecting the UI.
To use the application, follow these steps:
- Load a signal or create a custom signal using the Signal Mixer.
- Adjust the sampling frequency in real-time and observe the effects on signal recovery.
- add noise to the signal and control the SNR level.
- install project dependencies
pip install -r requirements.txt
- Run the application
python main.py
We would like to acknowledge the following individuals for their contributions:
Omar Atef |
Ibrahim Emad |
Hazem Rafaat |
Ahmed Khaled |