This project provides a comprehensive set of tools for digital signal processing (DSP), including classes for generating, manipulating, and analyzing signals in both time and frequency domains. The toolkit is designed with flexibility and efficiency in mind, making it suitable for various DSP tasks, such as waveform generation, noise addition, amplitude detection, differentiation, integration, and frequency analysis.
TSignalLine
- Represents a general signal line with methods for managing and processing signal data points.
TGenerator
- Generates waveforms such as sine, cosine, tangent, and cotangent with customizable parameters like frequency, amplitude, and phase.TNoiseGenerator
- Adds noise to signals with configurable noise characteristics.
TAmplitudeDetector
- Computes the amplitude of a signal by removing the DC component and applying the RMS module.TDifferentiator
- Calculates the derivative of a signal using various differentiation methods.TIntegrator
- Computes the integral of a signal with selectable integration methods (e.g., trapezoidal, Simpson’s).TMultiplier
andTSummator
- Perform pointwise multiplication and summation of two signals, respectively.
TRMS
- Computes the RMS value of a signal, which is a measure of the signal's power.TCorrelator
- Computes the correlation factor between two signals. Normalizes the correlation using RMS values to obtain a normalized correlation coefficient.
TFrequencyAnalyzer
- Converts a signal from the time domain to the frequency domain by correlating it with sinusoidal signals. Removes the DC component automatically to provide an accurate frequency analysis.
TFileWriter
- Saves signals to text files, with an option to overwrite existing files.TGnuPlotViewer
- Provides tools for visualizing signals using GnuPlot with configurable options for graph presentation.
- Doxygen Documentation: All classes and methods are documented with Doxygen comments for easy reference and understanding.
- C++20 or higher.
- GnuPlot: Required for signal visualization.
- CMake & Make: For building the project.
Clone the repository and build the project with CMake:
git clone https://github.com/your-username/your-repo.git
cd your-repo
mkdir build && cd build
cmake ..
make
See the examples
directory for sample code snippets demonstrating the usage of the toolkit classes.
This project is licensed under the MIT License - see the LICENSE.md file for details.