All Projects → arntanguy → gram_savitzky_golay

arntanguy / gram_savitzky_golay

Licence: BSD-2-Clause license
C++ Implementation of Savitzky-Golay filtering based on Gram polynomials

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language
matlab
3953 projects
shell
77523 projects

Projects that are alternatives of or similar to gram savitzky golay

Vue Table Dynamic
🎉 A dynamic table with sorting, filtering, editing, pagination, multiple select, etc.
Stars: ✭ 106 (+51.43%)
Mutual labels:  filtering
Pytorchwavelets
PyTorch implementation of the wavelet analysis from Torrence & Compo (1998)
Stars: ✭ 197 (+181.43%)
Mutual labels:  filtering
nimSocks
A filtering SOCKS proxy server and client library written in nim.
Stars: ✭ 51 (-27.14%)
Mutual labels:  filtering
Vuejs Datatable
A Vue.js component for filterable and paginated tables.
Stars: ✭ 148 (+111.43%)
Mutual labels:  filtering
Greentunnel
GreenTunnel is an anti-censorship utility designed to bypass the DPI system that is put in place by various ISPs to block access to certain websites.
Stars: ✭ 2,477 (+3438.57%)
Mutual labels:  filtering
Structured Filter
jQuery UI widget for structured queries like "Contacts where Firstname starts with A and Birthday before 1/1/2000 and State in (CA, NY, FL)"...
Stars: ✭ 213 (+204.29%)
Mutual labels:  filtering
Charcoal Ios
A modern way to filter things in your iOS apps
Stars: ✭ 102 (+45.71%)
Mutual labels:  filtering
ar-search
Provides unified search model for Yii ActiveRecord
Stars: ✭ 31 (-55.71%)
Mutual labels:  filtering
Vue Bootstrap4 Table
Advanced table based on Vue 2 and Bootstrap 4 ⚡️
Stars: ✭ 187 (+167.14%)
Mutual labels:  filtering
graphql-filter-java
This project is developed to help developers add filtering support to their graphql-java services
Stars: ✭ 52 (-25.71%)
Mutual labels:  filtering
Nwaves
.NET library for 1D signal processing focused specifically on audio processing
Stars: ✭ 151 (+115.71%)
Mutual labels:  filtering
Afterqc
Automatic Filtering, Trimming, Error Removing and Quality Control for fastq data
Stars: ✭ 169 (+141.43%)
Mutual labels:  filtering
Specification
OpenMessaging Specification
Stars: ✭ 242 (+245.71%)
Mutual labels:  filtering
Searchable
Search/filter functionality for Laravel's Eloquent models
Stars: ✭ 113 (+61.43%)
Mutual labels:  filtering
FeedSDK
Java SDK for downloading large gzipped (tsv) item feed files and applying filters for curation
Stars: ✭ 20 (-71.43%)
Mutual labels:  filtering
Logview
Emacs mode for viewing log files.
Stars: ✭ 104 (+48.57%)
Mutual labels:  filtering
React Table
⚛️ Hooks for building fast and extendable tables and datagrids for React
Stars: ✭ 15,739 (+22384.29%)
Mutual labels:  filtering
mail2most
watch emails and send them to mattermost
Stars: ✭ 54 (-22.86%)
Mutual labels:  filtering
ics
Integration that displays the next event of an ics link (support reoccuring events)
Stars: ✭ 48 (-31.43%)
Mutual labels:  filtering
Blazortable
Blazor Table Component with Sorting, Paging and Filtering
Stars: ✭ 249 (+255.71%)
Mutual labels:  filtering

gram_savitzky_golay

CI of gram-savitzy-golay Documentation Package gram_savitzky_golay

C++ Implementation of Savitzky-Golay filtering based on Gram polynomials, as described in

Installation

From Ubunu packages

# Make sure you have required tools
sudo apt install apt-transport-https lsb-release ca-certificates gnupg
# Add our key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key F6D3710D0B5016967A994DFFA650E12EFF6D3EDE
# Add our repository
echo "deb https://dl.bintray.com/arntanguy/ppa-head bionic main" | sudo tee -a /etc/apt/sources.list.d/arntanguy-head.list
# Install packages
sudo apt install libgram-savitzy-golay-dev

From source

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

How to include in your projects?

This package uses a modern cmake approach and exports its targets. To include in your own project, simply use:

cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)

project(Example LANGUAGES CXX)

# Find the state-observation package and all its dependencies (Eigen)
find_package(gram_savitzky_golay REQUIRED)

# Creates a new executable and link it with the `gram_savitzky_golay` target
add_executable(Example example.cpp)
target_link_libraries(Example PUBLIC gram_savitzky_golay::gram_savitzky_golay)

Example

#include <gram_savitzky_golay/gram_savitzky_golay.h>

// Window size is 2*m+1
const size_t m = 3;
// Polynomial Order
const size_t n = 2;
// Initial Point Smoothing (ie evaluate polynomial at first point in the window)
// Points are defined in range [-m;m]
const size_t t = m;
// Derivation order? 0: no derivation, 1: first derivative, 2: second derivative...
const int d = 0;


// Real-time filter (filtering at latest data point)
gram_sg::SavitzkyGolayFilter filter(m, t, n, d);
// Filter some data
std::vector<double> data = {.1, .7, .9, .7, .8, .5, -.3};
double result = filter.filter(data);


// Real-time derivative filter (filtering at latest data point)
// Use first order derivative
// NOTE that the derivation timestep is assumed to be 1. If this is not the case,
// divide the filter result by the timestep to obtain the correctly scaled derivative
// See Issue #1
d=1;
gram_sg::SavitzkyGolayFilter first_derivative_filter(m, t, n, d);
// Filter some data
std::vector<double> values = {.1, .2, .3, .4, .5, .6, .7};
// Should be =.1
double derivative_result = first_derivative_filter.filter(values);

Filtering Rotations

#include <gram_savitzky_golay/spatial_filters.h>

gram_sg::SavitzkyGolayFilterConfig sg_conf(50, 50, 2, 0);
gram_sg::RotationFilter filter(sg_conf);

filter.reset(Eigen::Matrix3d::Zero());

// Add rotation matrices to the filter
filter.add(Eigen::Matrix3d ...)
filter.add(Eigen::Matrix3d ...)
filter.add(Eigen::Matrix3d ...)

// Filter rotation matrices (weighted average of rotation matrices followed by an orthogonalization)
// See Peter Cork lecture here:
// https://www.cvl.isy.liu.se/education/graduate/geometry2010/lectures/Lecture7b.pdf
const Eigen::Matrix3d res = filter.filter();

This header also contains a filter for homogeneous transformations defined as Eigen::Affine3d, and a generic filter for eigen vectors.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].