Hey everyone! I recently published my first Julia DSP and digital-communications package:
Somewhat embarrassingly, this project began with a slightly petty amount of spite toward MATLAB. I wanted to implement the communication-system components I regularly used myself, benchmark them hard, and see how far I could push the Julia versions.
Eventually, I realized that simply “beating MATLAB” wasn’t a particularly useful goal. The genuinely rewarding part was learning how to build a serious Julia library: designing composable APIs, handling difficult numerical edge cases, keeping runtime dependencies minimal, and testing complete transmitter-to-receiver links.
The name is admittedly a little misleading now. I originally only intended to design my own raised-cosine and root-raised-cosine filters, hence RRCFilters.jl. Then the project escaped its original scope and grew into a much broader communications toolkit. I’m open to renaming suggestions before registration!
It currently includes:
- Raised-cosine and root-raised-cosine filters
- QAM and PSK modulation
- AWGN and common signal impairments
- AGC, carrier synchronization, and symbol synchronization
- BER, SER, and EVM measurements
- Convolutional coding, Viterbi decoding, and CRC
- LMS, RLS, APA, and decision-feedback equalization
- End-to-end link tests and benchmark tooling
The package uses only Julia standard-library runtime dependencies and is still at v0.1.0. I would genuinely appreciate feedback on the API, DSP correctness, package name, and anything that would make it more useful for real communications work.
This sounds honest, ambitious, and personal without making the MATLAB angle or competition with another Julia package, the project’s entire identity.
If you find the project interesting or useful, feedback or a GitHub star would mean a lot.
Have a great day, folks!
-JB