Skip to content

iDsiddy/Signals-Systems-Lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Signals & Systems Laboratory - EE-2-08 (MO)

Department of Electrical Engineering
B.Tech Electrical & Electronics Engineering – IIT Jammu

Python NumPy SciPy Matplotlib Jupyter License Institute

This repository contains the complete collection of Signals & Systems laboratory experiments (1–9) implemented and analyzed using Python (NumPy, SciPy, and Matplotlib).
Each experiment explores both theoretical foundations and computational verification of key signal analysis concepts — from Fourier and Z-transforms to system stability and convolution.


🧭 Course Objectives

  • To study fundamental properties of continuous and discrete-time signals.
  • To understand linear time-invariant (LTI) system behavior.
  • To perform Fourier, Laplace, and Z-domain analysis.
  • To verify system properties such as linearity, time-shifting, scaling, convolution & stability in different domains.
  • To simulate and visualize system responses & properties using Python libraries.

🔬 List of Experiments

Exp. No. Title Key Topics / Outcomes
1 Introduction to Signal Generation and Classification Generation of basic signals: unit step, ramp, exponential, sinusoidal, and impulse sequences.
2 Sampling Theorem and Signal Reconstruction Visualization of the Nyquist Sampling Theorem, under-sampling and over-sampling effects, and reconstruction of continuous-time signals from discrete samples.
3 Convolution and System Response Analysis Time-domain convolution using both analytical and Python-based methods (np.convolve, iterative looping).
5 Fourier Series Representation Computation of Fourier coefficients for square and sawtooth waves; study of Gibbs phenomenon and reconstruction error.
6 Continuous-Time Fourier Transform (CTFT) Derivation and numerical verification of CTFT for sinusoidal, rectangular, and exponentially decaying signals.
7 Z-Transform and ROC Analysis Computation of Z-transforms, pole-zero plots, and visualization & interpretation of Region of Convergence (ROC) for various signals and understanding conditions for system stability.
8 Properties of Z-Transform Experimental verification of linearity, time-shifting, scaling, time-reversal, and convolution properties of the Z-transform.
9 Discrete Fourier Transform (DFT) and Frequency Domain Analysis Understanding Discrete Fourier Transform (DFT) and implementing N-point DFT using matrix-based computation and inverse DFT reconstruction.

⚙️ Tools and Libraries Used

  • 🐍 Python
  • 📦 NumPy, SciPy, Matplotlib, SymPy
  • 💻 Jupyter Notebooks / VS Code for simulations and visualization

📊 Results and Observations

  • 1: Successfully generated and visualized standard discrete-time and continuous-time signals (unit step, ramp, exponential, sinusoidal, and impulse), confirming theoretical definitions through Python-based simulation.

  • 2: Verified the Nyquist Sampling Theorem by demonstrating perfect reconstruction at the Nyquist rate and distortion under under-sampling and over-sampling conditions.

  • 3: Confirmed that linear time-invariant (LTI) system output obtained via direct convolution matches analytical and numerical convolution results, validating time-domain convolution theory.

  • 4: (If applicable) Observed filtering effects and response characteristics for systems using impulse response computations and verified their stability via recursive implementations.

  • 5: Computed and analyzed Fourier Series coefficients for periodic square and sawtooth signals, observing Gibbs phenomenon and amplitude doubling for odd harmonics during reconstruction.

  • 6: Verified Continuous-Time Fourier Transform (CTFT) spectra of sinusoidal and exponentially decaying signals, showing correct placement of delta impulses and spectral broadening due to time-domain truncation.

  • 7: Computed Z-transforms and plotted pole-zero diagrams; confirmed Region of Convergence (ROC) behavior for causal and anti-causal signals and observed sharper spectral peaks near poles.

  • 8: Verified Z-transform properties — linearity, time-shifting, scaling, time-reversal, and convolution — by comparing analytical results with computational verification.

  • 9: Successfully implemented Discrete Fourier Transform (DFT) and Inverse DFT (IDFT) using matrix formulation; confirmed reconstruction accuracy and observed frequency-domain periodicity.


🧠 Key Learnings

  • Understanding how transforms simplify signal and system analysis.
  • Connection between time-domain operations and their Z/Fourier-domain effects.
  • Practical demonstration of LTI system behavior and stability.
  • Confidence in using Python as a simulation environment for EE analysis.

🧩 Folder Structure

Signals-and-Systems-Lab/
│
├── README.md                     # Overview, experiments list, results summary
│
├── Lab1/
│   ├── Lab1_Report.pdf           # Final submitted report
│   ├── Lab1_Code.ipynb           # Jupyter notebook
│   ├── Lab1_Code.py              # Optional Python script
│   ├── Figures/                  # All plots generated
│   │   ├── unit_step.png
│   │   ├── ramp_signal.png
│   │   └── ...
│   ├── Data/                     # CSV or input signals (if any)
│   └── Notes.md                  # Extra derivations/explanations (optional)
│
├── Lab2/
│   ├── Lab2_Report.pdf
│   ├── Lab2_Code.ipynb
│   ├── Figures/
│   │   ├── sampling.png
│   │   ├── aliasing.png
│   │   └── recon_sinc.png
│   ├── Data/             
│   └── Notes.md
│
├── Lab3/
│   ├── Lab3_Report.pdf
│   ├── Lab3_Code.ipynb
│   ├── Figures/
│   │   ├── linear_conv.png
│   │   ├── circular_conv.png
│   │   └── zero_padding_effect.png
│   └── Notes.md
│
├── Lab4/
│   ├── Lab4_Report.pdf
│   ├── Lab4_Code.ipynb
│   ├── Figures/
│   └── Notes.md
│
├── Lab5/
│   ├── Lab5_Report.pdf
│   ├── Lab5_Code.ipynb
│   ├── Figures/
│   │   ├── square_fs.png
│   │   ├── sawtooth_fs.png
│   │   ├── gibbs.png
│   │   └── mse_vs_terms.png
│   └── Notes.md
│
├── Lab6/
│   ├── Lab6_Report.pdf
│   ├── Lab6_Code.ipynb
│   ├── Figures/
│   │   ├── ctft_cos.png
│   │   ├── ctft_rect.png
│   │   ├── ctft_windowed.png
│   └── Notes.md
│
├── Lab7/
│   ├── Lab7_Report.pdf
│   ├── Lab7_Code.ipynb
│   ├── Figures/
│   │   ├── x1_z_domain.png
│   │   ├── x2_z_domain.png
│   │   ├── roc_plots.png
│   │   ├── convolution_z_vs_time.png
│   └── Notes.md
│
├── Lab8/
│   ├── Lab8_Report.pdf
│   ├── Lab8_Code.ipynb
│   ├── Figures/
│   │   ├── linearity.png
│   │   ├── shifting.png
│   │   ├── scaling.png
│   │   ├── reversal.png
│   │   └── convolution_property.png
│   └── Notes.md
│
├── Lab9/
│   ├── Lab9_Report.pdf
│   ├── Lab9_Code.ipynb
│   ├── Figures/
│   │   ├── dft_matrix.png
│   │   ├── fft_vs_dft_runtime.png
│   │   └── fft_diagram.png
│   └── Notes.md
│
└── Common/
    ├── templates/                # Latex templates / report formatting
    ├── utils/                    # Helper functions shared across labs
    └── Signals/                  # Frequently used sample signals

📄 License

MIT License — feel free to use any code from this repo.