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.
- 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
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ signal-ict-dhriti-92510133033
pip install dist/signal_ict_dhriti_92510133033-0.1.0-py3-none-any.whl
numpy >= 1.20.0
matplotlib >= 3.3.0
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)
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
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 |
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 |
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 |
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
- Basic signal plots:
sine_wave.png
,unit_step.png
, etc. - Operation comparison plots:
time_shift_comparison_k5.png
- Individual operation plots:
time_shift_k5.png
(backward compatibility)
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))
# 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
# 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)
# 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
# Install build tools
pip install --upgrade build twine
# Build package
python -m build
# Upload to TestPyPI
twine upload --repository testpypi dist/*
- v0.1.0: Initial release
- Basic signal generation functions
- Time domain operations
- Enhanced visualization with comparison plots
- Complete package structure with proper metadata
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Dhriti (Student ID: 92510133033)
- π§ Email: [dhritiambasana@gmail.com]
- π GitHub: [https://github.com/dhritiambasana]
- 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.