Skip to content
Median utility functions for postgres
C TSQL Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
doc
sql
src
test
.gitattributes
.gitignore
.travis.yml
LICENSE
META.json
Makefile
README.md
pg_median_utils.control

README.md

pg_median_utils 0.0.1

A postgres extension containing some median-related utilities.

At this time, provides two window functions - one for applying a median filter, which behaves the same as SciPy's medfilt, and a second which applies the median filter iteratively until it converges (no change greater than some small value).

Usage

Use with any double precision column, for example:

SELECT median_filter(v::double precision, 5) over() FROM generate_series(1, 10) as t(v);

iterated_median_filter 
------------------------
                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      8
                      8
(10 rows)

Or for an iterated version:

SELECT iterated_median_filter(v, 3) over() FROM (VALUES (1), (1.1), (0.9), (1.1), (0.95), (2.1), (1.95), (2.0), (2.05), (3.11), (2.99), (3.05), (3.0)) as t(v);

iterated_median_filter 
------------------------
                      1
                      1
                      1
                    1.1
                    1.1
                   1.95
                      2
                      2
                   2.05
                   2.99
                      3
                      3
                      3
(13 rows)

Comparing the two:

SELECT median_filter(v, 3) over(), iterated_median_filter(v, 3, 0.0000001) over() FROM (VALUES (1), (1.1), (0.9), (1.1), (0.95), (2.1), (1.95), (2.0), (2.05), (3.11), (2.99), (3.05), (3.0)) as t(v);

median_filter | iterated_median_filter 
---------------+------------------------
             1 |                      1
             1 |                      1
           1.1 |                      1
          0.95 |                    1.1
           1.1 |                    1.1
          1.95 |                   1.95
             2 |                      2
             2 |                      2
          2.05 |                   2.05
          2.99 |                   2.99
          3.05 |                      3
             3 |                      3
             3 |                      3
(13 rows)
You can’t perform that action at this time.