aboutsummaryrefslogtreecommitdiff
path: root/help/NLMSerr_in~-help.pd
blob: 6882aea42fa489b550e6448c8a1481856e5aade2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#N canvas 378 66 925 637 10;
#N canvas 0 22 450 300 (subpatch) 0;
#X array W 200 float 0;
#X coords 0 1 199 -1 200 140 1;
#X restore 588 339 graph;
#X msg 25 245 update \$1;
#X msg 102 255 beta \$1;
#X obj 272 24 tgl 15 0 empty empty empty 0 -6 0 8 -225280 -1 -1 1 1
;
#X obj 272 45 dsp;
#X floatatom 272 91 5 0 0 0 - - -;
#X floatatom 285 70 5 0 0 0 - - -;
#X obj 276 563 bng 15 150 20 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 516 230 2.arg: <float> learn-rate = beta;
#X obj 225 185 noise~;
#X obj 25 58 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -225280 -1
-1 0;
#N canvas 165 115 464 314 (subpatch) 0;
#X obj 76 61 inlet;
#X msg 32 163 0;
#X msg 63 159 1;
#X msg 97 158 2;
#X msg 132 156 4;
#X msg 159 157 8;
#X msg 191 162 16;
#X msg 219 164 32;
#X msg 248 165 64;
#X obj 76 84 sel 0 1 2 3 4 5 6 7;
#X obj 32 217 outlet;
#X connect 0 0 9 0;
#X connect 1 0 10 0;
#X connect 2 0 10 0;
#X connect 3 0 10 0;
#X connect 4 0 10 0;
#X connect 5 0 10 0;
#X connect 6 0 10 0;
#X connect 7 0 10 0;
#X connect 8 0 10 0;
#X connect 9 0 1 0;
#X connect 9 1 2 0;
#X connect 9 2 3 0;
#X connect 9 3 4 0;
#X connect 9 4 5 0;
#X connect 9 5 6 0;
#X connect 9 6 7 0;
#X connect 9 7 8 0;
#X restore 25 205 pd;
#X text 34 37 internal downsampling of update;
#X msg 96 337 gamma \$1;
#X text 75 363 input signal;
#X text 190 362 desired signal;
#N canvas 0 22 450 300 (subpatch) 0;
#X array IR 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 367 11 graph;
#X obj 54 540 unsig~;
#X floatatom 54 566 9 0 0 0 - - -;
#X obj 174 539 unsig~;
#X floatatom 174 565 9 0 0 0 - - -;
#X text 26 363 x(n);
#X text 243 377 d(n);
#X text 29 508 y(n) = W * x(n);
#X obj 276 291 FIR~ IR 32;
#X obj 618 73 loadbang;
#X text 566 220 (array-sizes have to be >= then FIR_size);
#X text 516 210 1.arg: <float> number of order of FIR-filter;
#X text 42 71 update every sample;
#X text 42 56 stop \, no update;
#X text 42 86 update every 2nd sample;
#X text 42 101 update every 4th sample;
#X text 42 116 update every 8th sample;
#X text 42 131 update every 16th sample;
#X text 42 146 update every 32nd sample;
#X text 42 161 update every 64th sample;
#N canvas 0 22 474 324 (subpatch) 0;
#X obj 48 46 inlet;
#X obj 205 47 inlet;
#X msg 205 71 \; IR const 0;
#X msg 48 120 \; IR 0 0 0 0 0.314287 0.8 0.75 0 0 0 0 -0.7 -0.65 0
0 0 0.157143 0.128572 0 0 -0.128572 -0.1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0;
#X obj 92 84 loadbang;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 4 0 3 0;
#X restore 619 48 pd;
#X obj 632 30 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 649 27 clear;
#X obj 619 11 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 636 8 load;
#X text 644 50 IR;
#X text 4 495 filtered output signal;
#X text 178 495 error signal;
#X text 152 507 e(n) = d(n) - W * x(n);
#X text 293 557 constrain;
#X text 293 567 coefficients;
#X msg 276 522 0;
#X obj 276 542 speedlim 100;
#X obj 83 512 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X obj 247 511 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#N canvas 0 22 470 320 (subpatch) 0;
#X obj 137 73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X msg 137 115 39;
#X msg 137 156 \$1 39;
#X msg 136 53 1;
#X obj 137 92 metro 200;
#X obj 136 24 inlet;
#X obj 137 135 tabread W;
#X obj 137 180 tabwrite W;
#X connect 0 0 4 0;
#X connect 1 0 6 0;
#X connect 2 0 7 0;
#X connect 3 0 0 0;
#X connect 4 0 1 0;
#X connect 5 0 3 0;
#X connect 6 0 2 0;
#X restore 618 94 pd;
#X text 643 100 update of W;
#X text 642 89 graphical;
#X text 516 250 4.arg: <symbol> table-name of W;
#X text 516 240 3.arg: <float> minimum input value gamma;
#X text 132 317 minimum input value;
#X msg 102 218 0.1;
#X msg 96 299 1e-05;
#X text 155 256 beta [0 .. 2];
#X text 152 336 gamma [0 .. 1];
#X obj 517 187 cnv 15 68 17 empty empty empty 20 12 0 14 -225280 -66577
0;
#N canvas 0 22 499 295 FORMULAS 0;
#X obj 167 52 cnv 15 150 40 empty empty empty 20 12 0 14 -225280 -66577
0;
#X obj 167 123 cnv 15 270 50 empty empty empty 20 12 0 14 -225280 -66577
0;
#X obj 167 205 cnv 15 260 30 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 280 129 beta;
#X text 231 146 >;
#X text 232 144 _;
#X text 232 138 _;
#X text 283 141 2;
#X text 346 141 2;
#X text 311 146 gamma * blocksize);
#X text 300 146 +;
#X text 243 146 x[n-i];
#X text 174 135 my(n) =;
#X text 223 130 _________________________________;
#X text 16 135 normalized learn rate:;
#X text 173 56 y(n) = W * x(n);
#X obj 237 54 cnv 11 1 1 empty empty * 0 9 0 14 -225280 -1 0;
#X text 173 72 e(n) = d(n) - W * x(n);
#X obj 286 71 cnv 11 1 1 empty empty * 0 9 0 14 -225280 -1 0;
#X text 119 73 error:;
#X text 116 55 output:;
#X text 26 210 coefficient iteration:;
#X text 188 211 W(k+1 \, i) = W(k \, i) + my(n)* e(n)* x(n);
#X restore 518 187 pd FORMULAS;
#X obj 102 238 cnv 14 31 14 empty empty empty 20 12 0 14 -225280 -66577
0;
#X floatatom 102 238 5 0 2 0 - - -;
#X text 138 237 learn-rate;
#X obj 96 319 cnv 14 31 14 empty empty empty 20 12 0 14 -225280 -66577
0;
#X floatatom 96 319 5 0 2 0 - - -;
#X floatatom 25 226 5 0 0 0 - - -;
#X text 518 169 Normalized Least Mean Square (linear adaptive FIR-filter)
;
#X text 514 268 (C) 2005 \, m.noisternig & t.musil \, IEM \, Graz \,
Austria;
#X text 542 281 [noisternig \, musil]_AT_iem.at;
#X obj 247 211 delwrite~ causal_del 2;
#X msg 825 34 64 44.1;
#X obj 829 62 /;
#X obj 829 89 print;
#X obj 226 475 delwrite~ feedback_del 2;
#X obj 301 383 -~;
#X text 249 437 err;
#X text 351 376 filt out;
#X msg 578 541 \; W const 0;
#X obj 54 413 delread~ causal_del 1.45126;
#X obj 351 358 delread~ feedback_del 1.45126;
#X obj 301 407 *~ -1;
#X msg 366 424 -1;
#X msg 412 425 1;
#X obj 53 450 NLMSerr_in~ 192 0.01 1e-05 W;
#X connect 1 0 86 0;
#X connect 2 0 86 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 9 0 72 0;
#X connect 9 0 24 0;
#X connect 10 0 11 0;
#X connect 11 0 68 0;
#X connect 13 0 86 0;
#X connect 17 0 18 0;
#X connect 19 0 20 0;
#X connect 24 0 77 0;
#X connect 25 0 51 0;
#X connect 37 0 36 1;
#X connect 39 0 36 0;
#X connect 47 0 48 0;
#X connect 48 0 7 0;
#X connect 57 0 64 0;
#X connect 58 0 67 0;
#X connect 64 0 2 0;
#X connect 67 0 13 0;
#X connect 68 0 1 0;
#X connect 73 0 74 0;
#X connect 74 0 75 0;
#X connect 77 0 83 0;
#X connect 81 0 86 0;
#X connect 82 0 77 1;
#X connect 83 0 86 1;
#X connect 84 0 83 1;
#X connect 85 0 83 1;
#X connect 86 0 17 0;
#X connect 86 0 76 0;