Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.8%) to scientific vocabulary
Keywords
Repository
Adaptive filters for GNU Radio
Basic Info
Statistics
- Stars: 28
- Watchers: 4
- Forks: 4
- Open Issues: 1
- Releases: 0
Topics
Metadata Files
README.md
gr-adapt
gr-adapt is a GNU Radio out-of-tree module that provides various adaptive filter blocks.
Overview

Adaptive Filters
The following standard filters are provided:
- Least mean squares (LMS)
- Normalized least mean squares (NLMS)
- Recursive least squares (RLS)
- Recursive least squares employing QR decomposition (QRD-RLS and IQRD-RLS)
The LMS and NLMS filters take an optional third input, which, if provided, will be used to update the filter taps. This allows the LMS and NLMS filters to be used in the filtered-x configuration (i.e. FxLMS and FxNLMS). Furthermore, adaptive filters are provided for estimating and tracking a channel under carrier and sampling frequency offsets as well as nonlinear distortions:
- Frequency offsets-compensated least mean squares (FO-LMS)[^1]
- Spline-interpolated and frequency offsets-compensated least mean squares (S-FO-LMS)[^2]
[^1]: K. Pärlin, T. Riihonen, V. L. Nir, and M. Adrat, “Estimating and Tracking Wireless Channels under Carrier and Sampling Frequency Offsets,” IEEE Transactions on Signal Processing, vol. 71, pp. 1053–1066, Mar. 2023.
[^2]: K. Pärlin, M. Turunen, A. Byman, T. Meriläinen, V. L. Nir, M. Adrat, and T. Riihonen “High-Power Cooperative Jamming with Nonlinear Known-Interference Cancellation,” IEEE Transactions on Aerospace and Electronic Systems, 2025.
Tests
There are several tests regarding performance and convergence of the provided filters in the python directory. The README in there gives an overview of those test results.
Examples
In the examples directory, examples of using adaptive filter blocks are given for the following use cases:
- Adaptive line enhancer
- Self-interference cancellation
- System identification
- Time delay estimation
- Channel and frequency offsets estimation
- Channel, nonlinear distortions, and frequency offsets estimation
Installation
Dependencies
- GNU Radio with the following components:
- gnuradio-runtime
- gnuradio-filter
- VOLK
- CMake 3.8
- pybind11
- Armadillo (optional*)
* RLS filters based on QR decomposition currently require Armadillo to work. If gr-adapt is built without Armadillo, those filters do nothing.
Building from source
sh
$ git clone git@github.com:karel/gr-adapt.git
$ cd gr-adapt
$ mkdir build
$ cd build
$ cmake ..
$ make -j$(nproc)
$ sudo make install
Installing from AUR
A package description is provided in AUR for Arch Linux users.
Troubleshooting
If GRC complains that it can't find some modules like
python
Traceback (most recent call last):
File "/home/user/git/gr-adapt/examples/top_block.py", line 30, in <module>
import adapt
ImportError: No module named adapt
then most likely you used a different CMAKE_INSTALL_PREFIX for the module than for GNU Radio. Uninstall the module, then run CMake in the build directory again with the correct CMAKE_INSTALL_PREFIX and then install the module.
Owner
- Login: karel
- Kind: user
- Repositories: 11
- Profile: https://github.com/karel
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Pärlin"
given-names: "Karel"
orcid: "https://orcid.org/0000-0002-6105-5916"
title: "gr-adapt"
date-released: 2018-06-24
url: "https://github.com/karel/gr-adapt"
preferred-citation:
type: article
authors:
- family-names: "Pärlin"
given-names: "Karel"
orcid: "https://orcid.org/0000-0002-6105-5916"
- family-names: "Riihonen"
given-names: "Taneli"
orcid: "https://orcid.org/0000-0001-5416-5263"
- family-names: "Le Nir"
given-names: "Vincent"
orcid: "https://orcid.org/0000-0001-8304-9173"
- family-names: "Adrat"
given-names: "Marc"
doi: 10.1109/TSP.2023.3259140
journal: "IEEE Transactions on Signal Processing"
month: 3
start: 1053
end: 1066
title: "Estimating and Tracking Wireless Channels under Carrier and Sampling Frequency Offsets"
volume: 71
year: 2023
GitHub Events
Total
- Watch event: 1
- Push event: 1
Last Year
- Watch event: 1
- Push event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 14
- Total pull requests: 1
- Average time to close issues: 3 months
- Average time to close pull requests: 2 days
- Total issue authors: 8
- Total pull request authors: 1
- Average comments per issue: 2.07
- Average comments per pull request: 2.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Caglarr (4)
- woongjae-yoo (2)
- dfy888 (2)
- karel (2)
- fhchl (1)
- ashtum (1)
- marcusmueller (1)
- andrehoracio97 (1)
Pull Request Authors
- ra1nb0w (1)