aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-11-27 23:38:33 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-11-27 23:38:33 +0000
commit29bed0995cc5ef96798204dc54cdd4bda031d795 (patch)
tree878903ddafd535f339ef8e36cfbe58fc17d2d664
parentd0441a85a78ea946920362deea21da7e01dcb91e (diff)
- added single, double and triple exponential smoothing objects based on NIST
alorgithms (the links are included in the patches). This was originally inspired by Fredrik Olofsson's f0.smooth and f0.smooth2, but I added triple exponential smoothing, and made them as Pd patches. svn path=/trunk/externals/mapping/; revision=9058
-rw-r--r--help/smooth-help.pd38
-rw-r--r--help/smooth_double-help.pd40
-rw-r--r--help/smooth_triple-help.pd60
-rw-r--r--smooth.pd28
-rw-r--r--smooth_double.pd46
-rw-r--r--smooth_triple.pd89
6 files changed, 301 insertions, 0 deletions
diff --git a/help/smooth-help.pd b/help/smooth-help.pd
new file mode 100644
index 0000000..b5dc503
--- /dev/null
+++ b/help/smooth-help.pd
@@ -0,0 +1,38 @@
+#N canvas 654 331 475 374 10;
+#X obj 241 157 mapping/timeroll;
+#X obj 20 157 mapping/timeroll;
+#X obj 40 333 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm
+;
+#N canvas 0 22 450 300 get 0;
+#X obj 115 19 inlet;
+#X obj 125 250 outlet;
+#X obj 108 100 cyclone/MouseState;
+#X msg 108 73 poll;
+#X obj 160 127 mapping/autoscale;
+#X obj 160 152 mapping/reverse;
+#X msg 144 73 nopoll;
+#X obj 114 44 select 1;
+#X connect 0 0 7 0;
+#X connect 2 2 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 7 1 6 0;
+#X restore 180 75 pd get mouse Y;
+#X obj 180 53 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 0
+1;
+#X text 22 309 (idea from Fredrik Olofsson);
+#X obj 277 92 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262130
+-1 -1 0 1;
+#X floatatom 289 112 5 0 0 0 - - -;
+#X text 23 14 Single Exponential Smoothing (ses);
+#X obj 241 117 smooth;
+#X text 329 114 (default: 0.15);
+#X connect 3 0 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 0 9 1;
+#X connect 9 0 0 0;
diff --git a/help/smooth_double-help.pd b/help/smooth_double-help.pd
new file mode 100644
index 0000000..2aa89a2
--- /dev/null
+++ b/help/smooth_double-help.pd
@@ -0,0 +1,40 @@
+#N canvas 330 215 710 386 10;
+#X obj 241 157 mapping/timeroll;
+#X obj 20 157 mapping/timeroll;
+#N canvas 0 22 450 300 get 0;
+#X obj 115 19 inlet;
+#X obj 125 250 outlet;
+#X obj 108 100 cyclone/MouseState;
+#X msg 108 73 poll;
+#X obj 160 127 mapping/autoscale;
+#X obj 160 152 mapping/reverse;
+#X msg 144 73 nopoll;
+#X obj 114 44 select 1;
+#X connect 0 0 7 0;
+#X connect 2 2 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 7 1 6 0;
+#X restore 278 72 pd get mouse Y;
+#X obj 278 50 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
+1;
+#X text 22 309 (idea from Fredrik Olofsson);
+#X obj 413 72 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262130
+-1 -1 0 1;
+#X floatatom 425 92 5 0 0 0 - - -;
+#X text 23 14 Double Exponential Smoothing (des);
+#X obj 40 333 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc433.htm
+;
+#X obj 461 157 mapping/timeroll;
+#X obj 339 114 smooth_double;
+#X text 498 132 trend (+-1):;
+#X connect 2 0 1 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 0 10 1;
+#X connect 10 0 0 0;
+#X connect 10 1 9 0;
diff --git a/help/smooth_triple-help.pd b/help/smooth_triple-help.pd
new file mode 100644
index 0000000..cecd50f
--- /dev/null
+++ b/help/smooth_triple-help.pd
@@ -0,0 +1,60 @@
+#N canvas 608 255 867 373 10;
+#X obj 231 157 mapping/timeroll;
+#X obj 20 157 mapping/timeroll;
+#N canvas 0 22 450 300 get 0;
+#X obj 115 19 inlet;
+#X obj 125 250 outlet;
+#X obj 108 100 cyclone/MouseState;
+#X msg 108 73 poll;
+#X obj 160 127 mapping/autoscale;
+#X obj 160 152 mapping/reverse;
+#X msg 144 73 nopoll;
+#X obj 114 44 select 1;
+#X connect 0 0 7 0;
+#X connect 2 2 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 7 1 6 0;
+#X restore 278 72 pd get mouse Y;
+#X obj 278 50 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
+1;
+#X obj 401 57 hsl 60 15 0 1 0 0 empty empty alpha -2 -8 0 10 -262130
+-1 -1 1900 1;
+#X floatatom 398 77 5 0 0 0 - - -;
+#X obj 441 157 mapping/timeroll;
+#X obj 651 157 mapping/timeroll;
+#X obj 407 338 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc435.htm
+;
+#X obj 339 114 smooth_triple;
+#X text 23 14 Triple Exponential Smoothing (tes);
+#X text 316 338 For more info:;
+#X text 61 310 original signal;
+#X text 291 310 smoothed signal;
+#X text 713 306 periodicity;
+#X text 503 309 trend (+-1);
+#X obj 471 57 hsl 60 15 0 1 0 0 empty empty gamma -2 -8 0 10 -262130
+-1 -1 0 1;
+#X floatatom 468 77 5 0 0 0 - - -;
+#X obj 541 57 hsl 60 15 0 1 0 0 empty empty beta -2 -8 0 10 -262130
+-1 -1 0 1;
+#X floatatom 538 77 5 0 0 0 - - -;
+#X obj 611 57 hsl 60 15 1 20 0 0 empty empty number_of_periods -2 -8
+0 10 -262130 -1 -1 2300 1;
+#X floatatom 608 77 5 0 0 0 - - -;
+#X connect 2 0 1 0;
+#X connect 2 0 9 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 4 0 9 1;
+#X connect 9 0 0 0;
+#X connect 9 1 6 0;
+#X connect 9 2 7 0;
+#X connect 16 0 17 0;
+#X connect 16 0 9 2;
+#X connect 18 0 19 0;
+#X connect 18 0 9 3;
+#X connect 20 0 21 0;
+#X connect 20 0 9 4;
diff --git a/smooth.pd b/smooth.pd
new file mode 100644
index 0000000..98d9ad1
--- /dev/null
+++ b/smooth.pd
@@ -0,0 +1,28 @@
+#N canvas 595 579 651 338 10;
+#X obj 113 13 inlet;
+#X obj 363 13 inlet;
+#X obj 363 67 purepd/float_argument \$1 0.15;
+#X obj 374 40 loadbang;
+#X obj 189 311 outlet;
+#X obj 189 116 float;
+#X text 325 251 St = a*Yt1+(1-a)*St1;
+#X obj 114 40 trigger float bang;
+#X text 166 117 Yt1;
+#X obj 262 116 float;
+#X text 295 115 St1;
+#X obj 189 170 expr $f3*$f1+(1-$f3)*$f2;
+#X obj 242 282 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm
+;
+#X obj 363 103 clip 0 1;
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 5 0 11 0;
+#X connect 7 0 5 1;
+#X connect 7 1 5 0;
+#X connect 7 1 9 0;
+#X connect 9 0 11 1;
+#X connect 11 0 4 0;
+#X connect 11 0 9 1;
+#X connect 13 0 11 2;
diff --git a/smooth_double.pd b/smooth_double.pd
new file mode 100644
index 0000000..6c76d24
--- /dev/null
+++ b/smooth_double.pd
@@ -0,0 +1,46 @@
+#N canvas 860 490 765 388 10;
+#X obj 61 6 inlet;
+#X obj 300 6 inlet;
+#X obj 300 60 purepd/float_argument \$1 0.15;
+#X obj 311 33 loadbang;
+#X obj 99 345 outlet;
+#X text 135 220 St = a*Yt1+(1-a)*St1;
+#X obj 61 51 trigger float bang;
+#X obj 166 147 float;
+#X text 202 147 St1;
+#X obj 300 96 clip 0 1;
+#X obj 257 312 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc433.htm
+;
+#X obj 215 345 outlet;
+#X obj 490 6 inlet;
+#X obj 501 33 loadbang;
+#X obj 490 96 clip 0 1;
+#X text 233 277 bt = y * (St - St1) + (1 - y) * bt1;
+#X text 549 96 y;
+#X text 359 96 a;
+#X obj 216 259 expr $f4 * ($f1 - $f2) + (1 - $f4) * $f3;
+#X obj 334 148 float;
+#X text 372 147 bt1;
+#X obj 490 60 purepd/float_argument \$2 0.3;
+#X obj 99 201 expr $f4*$f1+(1-$f4) * ($f2 + $f3);
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 3 0 2 0;
+#X connect 6 0 22 0;
+#X connect 6 1 7 0;
+#X connect 6 1 19 0;
+#X connect 7 0 18 1;
+#X connect 7 0 22 1;
+#X connect 9 0 22 3;
+#X connect 12 0 21 0;
+#X connect 13 0 21 0;
+#X connect 14 0 18 3;
+#X connect 18 0 19 1;
+#X connect 18 0 11 0;
+#X connect 19 0 18 2;
+#X connect 19 0 22 2;
+#X connect 21 0 14 0;
+#X connect 22 0 4 0;
+#X connect 22 0 7 1;
+#X connect 22 0 18 0;
diff --git a/smooth_triple.pd b/smooth_triple.pd
new file mode 100644
index 0000000..44d9e6e
--- /dev/null
+++ b/smooth_triple.pd
@@ -0,0 +1,89 @@
+#N canvas 122 353 991 458 10;
+#X obj 21 12 inlet;
+#X obj 260 12 inlet;
+#X obj 260 66 purepd/float_argument \$1 0.15;
+#X obj 271 39 loadbang;
+#X obj 59 421 outlet;
+#X obj 21 57 trigger float bang;
+#X obj 126 153 float;
+#X text 162 153 St1;
+#X obj 260 102 clip 0 1;
+#X obj 175 421 outlet;
+#X obj 450 12 inlet;
+#X obj 461 39 loadbang;
+#X obj 450 102 clip 0 1;
+#X text 428 265 bt = y * (St - St1) + (1 - y) * bt1;
+#X text 509 102 y;
+#X text 319 102 a;
+#X obj 176 265 expr $f4 * ($f1 - $f2) + (1 - $f4) * $f3;
+#X obj 294 154 float;
+#X text 332 153 bt1;
+#X obj 450 66 purepd/float_argument \$2 0.3;
+#X obj 59 207 expr $f4*$f1+(1-$f4) * ($f2 + $f3);
+#X obj 302 391 pddp/pddplink http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc435.htm
+;
+#X obj 245 421 outlet;
+#X obj 630 12 inlet;
+#X obj 641 39 loadbang;
+#X obj 630 102 clip 0 1;
+#X text 689 102 B;
+#X text 274 208 St = a*(Yt / It1+(1-a)*St1;
+#X text 524 223 we are only using 2L as the "season";
+#X obj 245 349 expr $f4 * ($f2/$f1) + (1 - $f4) * $f3;
+#X text 482 351 It = B * (Yt/St) + (1 - B) * It1;
+#X text 467 311 It;
+#X obj 630 66 purepd/float_argument \$3 0.6;
+#X obj 810 12 inlet;
+#X obj 821 39 loadbang;
+#X obj 810 102 int;
+#X obj 810 127 min 1;
+#X text 857 99 how many periods;
+#X obj 810 66 purepd/float_argument \$4 1;
+#N canvas 198 494 450 300 keep 0;
+#X obj 313 36 inlet;
+#X obj 214 255 outlet;
+#X obj 71 34 inlet;
+#X obj 71 92 list append;
+#X obj 186 165 list split;
+#X connect 0 0 4 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 3 1;
+#X connect 4 1 1 0;
+#X connect 4 2 3 1;
+#X restore 334 309 pd keep old It values;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 3 0 2 0;
+#X connect 5 0 20 0;
+#X connect 5 1 6 0;
+#X connect 5 1 17 0;
+#X connect 6 0 16 1;
+#X connect 6 0 20 1;
+#X connect 8 0 20 3;
+#X connect 10 0 19 0;
+#X connect 11 0 19 0;
+#X connect 12 0 16 3;
+#X connect 16 0 17 1;
+#X connect 16 0 9 0;
+#X connect 16 0 29 1;
+#X connect 17 0 16 2;
+#X connect 17 0 20 2;
+#X connect 19 0 12 0;
+#X connect 20 0 4 0;
+#X connect 20 0 6 1;
+#X connect 20 0 16 0;
+#X connect 20 0 29 0;
+#X connect 23 0 32 0;
+#X connect 24 0 32 0;
+#X connect 25 0 29 3;
+#X connect 29 0 22 0;
+#X connect 29 0 39 0;
+#X connect 32 0 25 0;
+#X connect 33 0 38 0;
+#X connect 34 0 38 0;
+#X connect 35 0 36 0;
+#X connect 36 0 39 1;
+#X connect 38 0 35 0;
+#X connect 39 0 29 2;