gr-adapt

Adaptive filters for GNU Radio

https://github.com/karel/gr-adapt

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

adaptive-filtering c-plus-plus digital-signal-processing full-duplex gnuradio python software-defined-radio
Last synced: 6 months ago · JSON representation ·

Repository

Adaptive filters for GNU Radio

Basic Info
  • Host: GitHub
  • Owner: karel
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 673 KB
Statistics
  • Stars: 28
  • Watchers: 4
  • Forks: 4
  • Open Issues: 1
  • Releases: 0
Topics
adaptive-filtering c-plus-plus digital-signal-processing full-duplex gnuradio python software-defined-radio
Created over 7 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

gr-adapt

gr-adapt is a GNU Radio out-of-tree module that provides various adaptive filter blocks.

Overview

Adaptive Filters

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

* 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

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)
Top Labels
Issue Labels
Pull Request Labels