From efa45f81b5dcb9609b1e2365a51b7a25a1ba2ce0 Mon Sep 17 00:00:00 2001 From: Georg Holzmann Date: Tue, 12 Jul 2005 14:09:53 +0000 Subject: initial commit of adaptive svn path=/trunk/externals/grh/; revision=3317 --- .../examples/08.decision-directed_equalization.pd | 167 +++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100755 adaptive/examples/08.decision-directed_equalization.pd (limited to 'adaptive/examples/08.decision-directed_equalization.pd') diff --git a/adaptive/examples/08.decision-directed_equalization.pd b/adaptive/examples/08.decision-directed_equalization.pd new file mode 100755 index 0000000..e81c5aa --- /dev/null +++ b/adaptive/examples/08.decision-directed_equalization.pd @@ -0,0 +1,167 @@ +#N canvas 0 0 815 449 10; +#N canvas 713 200 313 209 delay~ 0; +#X obj 42 45 inlet~; +#X obj 43 139 outlet~; +#X obj 43 89 z~ 60; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 176 261 pd delay~; +#N canvas 684 469 305 289 channel~ 0; +#X obj 39 120 bp~ 500 10; +#X text 72 96 dummy filter + latency; +#X obj 39 36 inlet~; +#X obj 40 234 outlet~; +#X obj 40 182 z~ 60; +#X connect 0 0 4 0; +#X connect 2 0 0 0; +#X connect 4 0 3 0; +#X restore 29 262 pd channel~; +#N canvas 490 469 479 338 PROBLEM_DESCRIPTION 0; +#X text 57 137 possible symbols: -1 \, 1; +#X text 55 160 the decision device is implemented by d=sign(y); +#X text 72 40 DECISION-DIRECTED CHANNEL EQUALIZATION; +#X text 27 189 The adaptive equalizer tries to invert the channel \, +so that the overal system has a flat frequency response and there are +almost no bit errors.; +#X text 28 280 We simulate the transmission with a simple bandpass +filter and a delay (= the channel).; +#X text 28 241 Bit errors are plotted over time for equalized and unequalized +transmission.; +#X text 27 83 This patch simulates the equalization of a baseband transmission +of a binary signal (similar to the adaptation process in e.g. a modem). +; +#X restore 28 106 pd PROBLEM_DESCRIPTION; +#N canvas 493 226 453 208 OBSERVATIONS 0; +#X text 21 30 OBSERVATIONS; +#X text 19 77 You can see that if you train the system long enough +there are almost no bit errors.; +#X text 20 126 A critical parameter is the delay: If you don't find +the exact delay of the channel adaptation works very bad for uncorrelated +training sequences.; +#X restore 28 130 pd OBSERVATIONS; +#X text 27 85 ReadMe:; +#N canvas 752 62 617 174 init 0; +#X obj 256 43 loadbang; +#X obj 213 120 s mur; +#X msg 515 103 \; pd dsp \$1; +#X obj 515 78 r audio_io; +#X msg 212 96 0.1; +#X obj 125 118 s moder; +#X msg 125 97 0; +#X connect 0 0 4 0; +#X connect 0 0 6 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X connect 6 0 5 0; +#X restore 679 389 pd init; +#X obj 708 108 tgl 20 0 audio_io empty empty 0 -6 0 8 -262144 -1 -1 +0 1; +#X floatatom 684 139 6 0 0 0 - mur mu; +#X text 546 138 learning rate (mu):; +#N canvas 0 0 450 300 input_signal~ 0; +#X obj 59 74 noise~; +#X obj 60 120 expr~ if($v1>=0 \, 1 \, -1); +#X text 75 104 signum:; +#X obj 60 182 outlet~; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X restore 29 198 pd input_signal~; +#N canvas 573 367 334 253 adaptive_equalizer~ 0; +#X obj 164 64 r mode; +#X obj 164 104 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 164 123 adaptation \$1; +#X obj 31 34 inlet~; +#X obj 108 34 inlet~; +#X obj 163 151 r mode; +#X obj 163 191 sel 1; +#X msg 163 212 init_unity; +#X obj 30 205 outlet~; +#N canvas 922 527 390 347 nlms~ 0; +#X obj 37 35 inlet~; +#X obj 155 44 inlet~; +#X text 134 24 desired signal; +#X obj 36 291 outlet~; +#X obj 261 135 loadbang; +#X msg 264 300 clear; +#X obj 262 250 r mu; +#X msg 262 272 mu \$1; +#X text 36 313 outsig1; +#X text 38 14 insig1; +#X msg 274 201 init_unity; +#X obj 261 156 t b b; +#X msg 59 96 print; +#X msg 261 178 adaptation 0; +#X obj 341 38 inlet; +#X obj 37 156 nlms~ 10 0.01; +#X connect 0 0 15 0; +#X connect 1 0 15 1; +#X connect 4 0 11 0; +#X connect 5 0 15 0; +#X connect 6 0 7 0; +#X connect 7 0 15 0; +#X connect 10 0 15 0; +#X connect 11 0 13 0; +#X connect 11 1 10 0; +#X connect 12 0 15 0; +#X connect 13 0 15 0; +#X connect 14 0 15 0; +#X connect 15 0 3 0; +#X restore 30 140 pd nlms~; +#X obj 164 84 expr if($f1==1 \, 1 \, 0); +#X obj 163 171 expr if($f1==0 \, 1 \, 0); +#X connect 0 0 10 0; +#X connect 1 0 2 0; +#X connect 2 0 9 2; +#X connect 3 0 9 0; +#X connect 4 0 9 1; +#X connect 5 0 11 0; +#X connect 6 0 7 0; +#X connect 7 0 9 2; +#X connect 9 0 8 0; +#X connect 10 0 1 0; +#X connect 11 0 6 0; +#X restore 28 337 pd adaptive_equalizer~; +#X obj 297 108 vradio 20 1 0 3 mode moder empty 0 -6 0 8 -262144 -1 +-1 2; +#X text 292 90 mode:; +#X text 37 244 H_chan(z); +#X text 37 319 H_eq(z); +#X text 26 22 DECISION-DIRECTED CHANNEL EQUALIZATION; +#X text 323 111 unequalized transmission; +#N canvas 609 329 450 300 decision_device~ 0; +#X obj 25 38 inlet~; +#X obj 26 97 expr~ if($v1>=0 \, 1 \, -1); +#X text 41 81 signum:; +#X obj 270 38 inlet~; +#X obj 59 202 tabsend~ biterrors; +#X obj 59 173 expr~ if($v1==$v2 \, -1 \, 1); +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 3 0 5 1; +#X connect 5 0 4 0; +#X restore 124 387 pd decision_device~; +#N canvas 0 0 450 300 graph3 0; +#X array biterrors 64 float 2; +#X coords 0 1.4 63 -1.4 350 140 1; +#X restore 380 245 graph; +#X text 734 257 error; +#X text 734 357 no error; +#X text 487 390 ---- 64 samples ----; +#X text 382 228 biterrors over time:; +#X text 624 110 Audio IO ->; +#X text 322 131 training; +#X text 323 150 equalized transmission; +#X text 302 112 1; +#X text 302 131 2; +#X text 302 151 3; +#N canvas 0 0 450 110 NEEDED_EXTERNALS 0; +#X text 16 38 For this patch you will need the zexy external by IOhannes +Zmoelnig: http://pd.iem.at; +#X restore 659 16 pd NEEDED_EXTERNALS; +#X connect 0 0 10 1; +#X connect 0 0 17 1; +#X connect 1 0 10 0; +#X connect 9 0 1 0; +#X connect 9 0 0 0; +#X connect 10 0 17 0; -- cgit v1.2.1