aboutsummaryrefslogtreecommitdiff
path: root/help/NLMS~-help.pd
blob: 97702f4d1e87fb4c4a765ca881b9c01ee85e73ae (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
#N canvas 23 7 909 523 10;
#N canvas 0 0 450 300 graph1 0;
#X array W 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 454 335 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 0 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 463 bng 15 150 20 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 453 230 2.arg: <float> learn-rate = beta;
#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 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 0 450 300 graph1 0;
#X array IR 40 float 0;
#X coords 0 1 39 -1 200 140 1;
#X restore 367 11 graph;
#X obj 54 440 unsig~;
#X floatatom 54 466 9 0 0 0 - - -;
#X obj 174 439 unsig~;
#X floatatom 174 465 9 0 0 0 - - -;
#X text 26 363 x(n);
#X text 281 362 d(n);
#X text 29 408 y(n) = W * x(n);
#X obj 276 291 FIR~ IR 32;
#X obj 618 73 loadbang;
#X text 503 220 (array-sizes have to be >= then FIR_size);
#X text 453 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 0 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 395 filtered output signal;
#X text 178 395 error signal;
#X text 152 407 e(n) = d(n) - W * x(n);
#X text 293 457 constrain;
#X text 293 467 coefficients;
#X msg 276 422 0;
#X obj 276 442 speedlim 100;
#X obj 83 412 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#X obj 247 411 cnv 8 1 1 empty empty * 0 7 0 14 -262144 -1 0;
#N canvas 0 0 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 453 250 4.arg: <symbol> table-name of W;
#X text 453 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 455 187 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 28 136 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 26 210 coefficient iteration:;
#X text 176 213 W(k+1 \, i) = W(k \, i) + my(n)* e(n)* x(n);
#X restore 455 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 455 169 Normalized Least Mean Square (linear adaptive FIR-filter)
;
#X obj 53 379 NLMS~ 32 0.1 1e-05 W;
#X text 451 268 (C) 2005 \, m.noisternig & t.musil \, IEM \, Graz \,
Austria;
#X text 479 281 [noisternig \, musil]_AT_iem.at;
#X connect 1 0 70 0;
#X connect 2 0 70 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 9 0 24 0;
#X connect 9 0 70 0;
#X connect 10 0 11 0;
#X connect 11 0 68 0;
#X connect 13 0 70 0;
#X connect 17 0 18 0;
#X connect 19 0 20 0;
#X connect 24 0 70 1;
#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 70 0 17 0;
#X connect 70 1 19 0;