aboutsummaryrefslogtreecommitdiff
path: root/help/n_CLNLMS~-help.pd
blob: ca40d31900561635f6d070a1f3e95c5dff9aae98 (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
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
#N canvas 18 0 998 718 10;
#N canvas 0 0 450 300 graph1 0;
#X array 1_W 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 49 517 graph;
#X msg 25 245 update \$1;
#X msg 102 255 beta \$1;
#X obj 438 26 tgl 15 0 empty empty empty 0 -6 0 8 -225280 -1 -1 0 1
;
#X obj 438 47 dsp;
#X floatatom 438 93 5 0 0 0 - - -;
#X floatatom 451 72 5 0 0 0 - - -;
#X obj 437 461 bng 15 150 20 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 53 275 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 7 39 internal downsampling of update;
#X msg 60 337 gamma \$1;
#X text 75 363 input signal;
#X text 320 362 desired signal;
#N canvas 0 0 450 300 graph1 0;
#X array IR 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 225 23 graph;
#X obj 54 460 unsig~;
#X floatatom 54 486 9 0 0 0 - - -;
#X obj 140 460 unsig~;
#X floatatom 140 486 9 0 0 0 - - -;
#X text 411 362 d(n);
#X obj 777 283 loadbang;
#X text 687 432 (array-sizes have to be >= then FIR_size);
#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 0 486 336 /SUBPATCH/ 0;
#X obj 48 46 inlet;
#X obj 205 47 inlet;
#X msg 205 71 \; IR const 0;
#X obj 92 84 loadbang;
#X msg 48 120 \; IR 0 0 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;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X restore 778 258 pd;
#X obj 791 240 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 808 237 clear;
#X obj 778 221 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 795 218 load;
#X text 840 227 IR;
#X text 4 395 filtered output signal;
#X text 324 394 error signal;
#X text 454 455 constrain;
#X text 454 465 coefficients;
#X msg 437 420 0;
#X obj 437 440 speedlim 100;
#X obj 95 412 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#N canvas 0 0 478 328 /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 92 190 \$1 39;
#X msg 136 53 1;
#X obj 137 92 metro 200;
#X obj 136 24 inlet;
#X obj 92 169 tabread 1_W;
#X obj 92 214 tabwrite 1_W;
#X msg 177 192 \$1 39;
#X msg 260 191 \$1 39;
#X obj 260 170 tabread 3_W;
#X obj 260 215 tabwrite 3_W;
#X obj 177 171 tabread 2_W;
#X obj 177 216 tabwrite 2_W;
#X connect 0 0 4 0;
#X connect 1 0 6 0;
#X connect 1 0 12 0;
#X connect 1 0 10 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 connect 8 0 13 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 12 0 8 0;
#X restore 777 304 pd;
#X text 802 310 update of W;
#X text 801 299 graphical;
#X text 96 317 minimum input value;
#X msg 102 218 0.1;
#X msg 60 299 1e-05;
#X text 155 256 beta [0 .. 2];
#X text 116 336 gamma [0 .. 1];
#X obj 527 47 cnv 15 68 17 empty empty empty 20 12 0 14 -225280 -66577
0;
#N canvas 0 0 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 277 141 2;
#X text 340 141 2;
#X text 311 146 gamma * blocksize);
#X text 294 146 +;
#X text 243 146 x[n-i];
#X text 174 135 my(n) =;
#X text 223 130 _________________________________;
#X text 8 135 normalized learn rate:;
#X text 173 54 y(n) = W * x(n);
#X obj 225 56 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 267 74 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 7 210 coefficient iteration:;
#X text 176 213 W(k+1 \, i) = leakage*W(k \, i) + my(n)* e(n)* x(n)
;
#X restore 527 47 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 60 319 cnv 14 31 14 empty empty empty 20 12 0 14 -225280 -66577
0;
#X floatatom 60 319 5 0 1 0 - - -;
#X floatatom 25 226 5 0 0 0 - - -;
#X text 526 29 Normalized Least Mean Square (linear adaptive FIR-filter)
;
#N canvas 0 0 450 300 graph1 0;
#X array 2_W 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 299 517 graph;
#N canvas 0 0 450 300 graph1 0;
#X array 3_W 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 549 517 graph;
#X obj 229 461 unsig~;
#X floatatom 229 487 9 0 0 0 - - -;
#X obj 319 459 unsig~;
#X floatatom 319 485 9 0 0 0 - - -;
#X obj 253 233 cnv 14 31 14 empty empty empty 20 12 0 14 -225280 -66577
0;
#X floatatom 253 233 5 0 10000 0 - - -;
#X msg 253 251 kappa \$1;
#X msg 253 213 1;
#X obj 408 291 FIR~ IR 32;
#X obj 171 291 z~ 2;
#X obj 289 291 z~ 4;
#X text 26 363 x1(n);
#X text 257 363 x3(n);
#X text 176 362 x2(n);
#X text 24 408 y1(n) = 1_W * x1(n);
#X obj 181 427 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X obj 271 401 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X text 110 423 y2(n) = 2_W * x2(n);
#X text 200 397 y3(n) = 3_W * x3(n);
#X obj 360 423 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X text 326 419 - 1_W * x1(n);
#X text 297 408 e(n) = d(n);
#X obj 360 433 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X text 326 429 - 2_W * x2(n);
#X obj 360 443 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X text 326 439 - 3_W * x3(n);
#X text 526 18 Multi Channel Constraint;
#X obj 53 380 n_CLNLMS~ 3 32 0.1 1e-05 1 0.95 W ______________________
;
#X text 472 230 minimum input value;
#X obj 436 232 cnv 14 31 14 empty empty empty 20 12 0 14 -225280 -66577
0;
#X floatatom 436 232 5 0 10000 0 - - -;
#X msg 436 212 1;
#X msg 436 250 leakage \$1;
#X text 516 254 leakage [0 .. 1];
#X text 520 163 (C) 2005 \, m.noisternig & t.musil \, IEM \, Graz \,
Austria;
#X text 548 176 [noisternig \, musil]_AT_iem.at;
#X text 525 69 1.arg: <float> number of channels n;
#X text 525 82 2.arg: <float> number of order of FIR-filter;
#X text 525 96 3.arg: <float> learn-rate = beta;
#X text 318 250 kappa;
#X text 289 231 constraint;
#X text 526 121 5.arg: <float> constraint = kappa;
#X text 525 108 4.arg: <float> regularization parameter = gamma;
#X text 526 133 6.arg: <float> leakage;
#X text 526 146 7.arg: <symbol> table-name of W;
#X connect 1 0 90 0;
#X connect 2 0 90 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 8 0 71 0;
#X connect 8 0 72 0;
#X connect 8 0 73 0;
#X connect 8 0 90 0;
#X connect 9 0 10 0;
#X connect 10 0 59 0;
#X connect 12 0 90 0;
#X connect 16 0 17 0;
#X connect 18 0 19 0;
#X connect 21 0 44 0;
#X connect 32 0 31 1;
#X connect 34 0 31 0;
#X connect 41 0 42 0;
#X connect 42 0 7 0;
#X connect 48 0 55 0;
#X connect 49 0 58 0;
#X connect 55 0 2 0;
#X connect 58 0 12 0;
#X connect 59 0 1 0;
#X connect 63 0 64 0;
#X connect 65 0 66 0;
#X connect 68 0 69 0;
#X connect 69 0 90 0;
#X connect 70 0 68 0;
#X connect 71 0 90 3;
#X connect 72 0 90 1;
#X connect 73 0 90 2;
#X connect 90 0 16 0;
#X connect 90 1 18 0;
#X connect 90 2 63 0;
#X connect 90 3 65 0;
#X connect 90 4 41 0;
#X connect 93 0 95 0;
#X connect 94 0 93 0;
#X connect 95 0 90 0;