From 29bed0995cc5ef96798204dc54cdd4bda031d795 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 27 Nov 2007 23:38:33 +0000 Subject: - 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 --- help/smooth-help.pd | 38 ++++++++++++++++++++ help/smooth_double-help.pd | 40 +++++++++++++++++++++ help/smooth_triple-help.pd | 60 +++++++++++++++++++++++++++++++ smooth.pd | 28 +++++++++++++++ smooth_double.pd | 46 ++++++++++++++++++++++++ smooth_triple.pd | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 301 insertions(+) create mode 100644 help/smooth-help.pd create mode 100644 help/smooth_double-help.pd create mode 100644 help/smooth_triple-help.pd create mode 100644 smooth.pd create mode 100644 smooth_double.pd create mode 100644 smooth_triple.pd 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; -- cgit v1.2.1