This project is a desktop application developed to demonstrate the principles of signal sampling and recovery based on the Nyquist–Shannon sampling theorem. It helps users visualize, sample, and reconstruct signals using various methods, showcasing the impact of sampling frequency and noise on signal recovery.
-
Signal Sampling and Recovery:
- Load a signal (from a file or generated in-app) and visualize it.
- Sample the signal at different frequencies (normalized or actual).
- Recover the original signal using various reconstruction methods like Whittaker–Shannon interpolation.
-
Signal Mixer/Composer:
- Combine sinusoidal signals of different frequencies and amplitudes.
- Add or remove components dynamically. Watch the video
-
Noise Addition:
- Add controllable noise to the signal with a customizable SNR.
- Visualize the effect of noise on signal frequency. Watch the video
-
Real-Time Interaction:
- Changes in sampling frequency and reconstruction methods update the visualization in real time.
-
Reconstruction Methods:
- Explore multiple reconstruction techniques, including Whittaker–Shannon and alternatives, via a dropdown menu. Watch the video
-
Multiple Graphs:
- View the original signal, reconstructed signal, error (difference), and frequency domain in a convenient layout.
-
Responsive UI:
- The application adjusts dynamically to resizing without disrupting the interface.
-
Testing Scenarios:
- Includes test cases demonstrating scenarios like aliasing and signal reconstruction challenges.
The Multi-Signal Viewer relies on the following technologies and libraries to deliver its robust functionality:
Dependency | Description |
---|---|
Python 3.x | Core programming language. |
NumPy | Numerical computations for signal processing. |
Pandas | Data manipulation and analysis. |
SciPy | Advanced scientific computing and interpolation. |
PyQt5 | GUI framework for building desktop applications. |
PyQtGraph | Fast plotting and 2D/3D visualization in PyQt. |
git clone https://github.com/Mostafaali3/Nyquist-Realtime-Sampling-Studio.git
cd Nyquist-Realtime-Sampling-Studio
pip install -r requirements.txt
python main.py
Mostafa Ali |
Youssef Abo El-Ela |
Kareem Abdel Nabi |
Ahmed AlDeeb |