Skip to content

Digital Signal Processing Package for ICT Coursework - Student ID: 92510133033. Includes signal generation, time operations, and enhanced visualization.

Notifications You must be signed in to change notification settings

dhritiambasana/signal-processing-python-LHC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Signal Processing Package - ICT Dhriti (92510133033)

TestPyPI Python Version License

A comprehensive digital signal processing package for generating and manipulating discrete-time signals. This package provides essential tools for signal analysis, generation of common signals, and basic signal operations with automatic visualization capabilities.

πŸš€ Features

  • Unitary Signals: Unit step, unit impulse, and ramp signal generation
  • Trigonometric Signals: Sine waves, cosine waves, and exponential signals
  • Signal Operations: Time shifting, time scaling, signal addition, and multiplication
  • Enhanced Visualization: Automatic plot generation with comparison views
  • Educational Focus: Perfect for learning and teaching digital signal processing concepts

πŸ“¦ Installation

From TestPyPI (Recommended for testing)

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ signal-ict-dhriti-92510133033

From Local Wheel

pip install dist/signal_ict_dhriti_92510133033-0.1.0-py3-none-any.whl

Dependencies

  • numpy >= 1.20.0
  • matplotlib >= 3.3.0

🎯 Quick Start

import signal_ICT_Dhriti_92510133033 as sig
import numpy as np

# Create time vector
n = np.arange(0, 20)

# Generate basic signals
sine_wave = sig.sine_wave(frequency=1, amplitude=2, n=n, save_fig=True)
unit_step = sig.unit_step(n, save_fig=True)
unit_impulse = sig.unit_impulse(n, save_fig=True)

# Apply signal operations
shifted_signal = sig.time_shift(sine_wave, k=5, save_fig=True)
scaled_signal = sig.time_scale(sine_wave, k=3, save_fig=True)

# Combine signals
combined = sig.signal_addition(sine_wave, unit_step, save_fig=True)

πŸ“š Module Structure

signal_ICT_Dhriti_92510133033/
β”œβ”€β”€ __init__.py              # Package initialization and exports
β”œβ”€β”€ unitary_signals.py       # Step, impulse, ramp functions
β”œβ”€β”€ trigonometric_signals.py # Sine, cosine, exponential functions
└── operations.py           # Time shift, scale, arithmetic operations

πŸ›  Available Functions

Unitary Signals (unitary_signals.py)

Function Description Parameters
unit_step(n, save_fig=True) Generates unit step function u[n] n: sample indices, save_fig: save plot
unit_impulse(n, save_fig=True) Generates unit impulse Ξ΄[n] n: sample indices, save_fig: save plot
ramp_signal(n, save_fig=True) Generates ramp function r[n] = nΒ·u[n] n: sample indices, save_fig: save plot

Trigonometric Signals (trigonometric_signals.py)

Function Description Parameters
sine_wave(freq, amp, n, phase=0, save_fig=True) Generates sine wave freq: frequency, amp: amplitude, n: samples, phase: phase shift
cosine_wave(freq, amp, n, phase=0, save_fig=True) Generates cosine wave freq: frequency, amp: amplitude, n: samples, phase: phase shift
exponential_signal(a, n, save_fig=True) Generates exponential signal aⁿ a: base, n: sample indices, save_fig: save plot

Signal Operations (operations.py)

Function Description Parameters
time_shift(signal, k, save_fig=True) Shifts signal by k samples signal: input signal, k: shift amount, save_fig: save comparison plot
time_scale(signal, k, save_fig=True) Scales signal in time by factor k signal: input signal, k: scale factor, save_fig: save comparison plot
signal_addition(s1, s2, save_fig=True) Adds two signals s1, s2: input signals, save_fig: save result plot
signal_multiplication(s1, s2, save_fig=True) Multiplies two signals s1, s2: input signals, save_fig: save result plot

πŸ“Š Enhanced Visualization

The package provides comprehensive plotting capabilities:

  • Individual signal plots: Each function generates its own visualization
  • Comparison plots: Operations show before/after comparisons
  • Multiple formats: Both stem plots (discrete) and line plots where appropriate
  • Automatic saving: All plots saved as high-resolution PNG files

Plot Types Generated

  1. Basic signal plots: sine_wave.png, unit_step.png, etc.
  2. Operation comparison plots: time_shift_comparison_k5.png
  3. Individual operation plots: time_shift_k5.png (backward compatibility)

πŸ’‘ Usage Examples

Example 1: Basic Signal Generation

import signal_ICT_Dhriti_92510133033 as sig
import numpy as np

# Create time samples
n = np.linspace(0, 2*np.pi, 50)

# Generate and visualize different signals
sine = sig.sine_wave(frequency=2, amplitude=1.5, n=n)
cosine = sig.cosine_wave(frequency=2, amplitude=1.5, n=n)
step = sig.unit_step(np.arange(-10, 11))

Example 2: Signal Operations

# Create a test signal
n = np.arange(0, 20)
test_signal = sig.sine_wave(1, 1, n)

# Apply time operations
delayed = sig.time_shift(test_signal, 3)    # Delay by 3 samples
advanced = sig.time_shift(test_signal, -2)  # Advance by 2 samples
stretched = sig.time_scale(test_signal, 2)  # Stretch by factor of 2

Example 3: Signal Arithmetic

# Create two signals
n = np.arange(0, 10)
signal1 = sig.sine_wave(1, 1, n)
signal2 = sig.cosine_wave(1, 0.5, n)

# Combine signals
sum_signal = sig.signal_addition(signal1, signal2)
product_signal = sig.signal_multiplication(signal1, signal2)

πŸ”§ Development

Local Development Setup

# Clone the repository
git clone https://github.com/yourusername/signal-processing-package.git
cd signal-processing-package

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

# Run tests
python main.py

Building Distribution

# Install build tools
pip install --upgrade build twine

# Build package
python -m build

# Upload to TestPyPI
twine upload --repository testpypi dist/*

πŸ“ Version History

  • v0.1.0: Initial release
    • Basic signal generation functions
    • Time domain operations
    • Enhanced visualization with comparison plots
    • Complete package structure with proper metadata

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘€ Author

Dhriti (Student ID: 92510133033)

πŸ™ Acknowledgments

  • Created for ICT coursework in Digital Signal Processing
  • Thanks to the Python scientific computing community
  • Built using NumPy and Matplotlib

Note: This package is designed for educational purposes and provides fundamental digital signal processing operations. For advanced signal processing applications, consider using specialized libraries like SciPy.

About

Digital Signal Processing Package for ICT Coursework - Student ID: 92510133033. Includes signal generation, time operations, and enhanced visualization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages