Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WYŒCIE: y = przefiltrowany adaptacyjnie sygna³ x, e = d-y , czyli sygna³ b³êdu
- 4
- 5
- clear all;
- 6
- 7
- % Uruchom program dla wszystkich kombinacji parametrów ialg i itest
- 8
- ialg = 1; % rodzaj algorytmu adaptacji: 1=LMS, 2=NLMS
- 9
- itest = 2; % test: 1 - usuwanie addytywnej interferencji (sieci)
- 10
- % 2 - usuwanie addytywnego szumu (za pomoc¹ liniowej predykcji)
- 11
- 12
- % Filtr nieunormowany LMS
- 13
- M = 50; % liczba wspó³czynników wagowych filtra adaptacyjnego
- 14
- mi = 0.01; % wspó³czynnik szybkoœci adaptacji ( 0<mi<1)
- 15
- 16
- % Filtr unormowany NLMS
- 17
- eng = 0.; % estymata energii poczatkowej sygnalu x, eng=>0, np. eng=0
- 18
- beta = 1 - 1 / M; % stala szybkosci zapominania energii 0<=beta<1
- 19
- 20
- % 0 ? wszystko pamiêtam, 1 ? nic nie pamiêtam
- 21
- 22
- gamma = 0.001; % stala bezpieczeñstwa mianownika energii np. = 0.001
- 23
- 24
- % Generacja sygna³u testowego LFM (liniowa modulacja czêstotliwoœci)
- 25
- 26
- Nx = 1000; % liczba próbek
- 27
- fpr = 1000; % czêstotliwoœæ próbkowania
- 28
- A = 1; % amplituda
- 29
- f0 = 0; % czêstotliwoœæ pocz¹tkowa sygna³u
- 30
- df = 25; % przyrost czêstotliwoœci Hz/sek
- 31
- obw = 1; % wybór obwiedni czasowej: 0=brak, 1=Gauss, 2=alfa*t, 3=exp(-alfa*t)
- 32
- dt = 1 / fpr;
- 33
- t = 0:dt:(Nx-1) * dt; % chwile czasowe próbkowania
- 34
- s = A * cos(2 * pi * (f0 * t + 0.5 * df * t.^2)); % sygnal LFM
- 35
- 36
- if (obw == 1) % obwiednia 1 - krzywa Gaussa
- 37
- alfa = 10;
- 38
- w = exp(-alfa * pi * (t-0.5).^2);
- 39
- end
- 40
- 41
- if (obw == 2) % obwiednia 2 - alfa*t
- 42
- alfa = 5;
- 43
- w = alfa * t;
- 44
- end
- 45
- 46
- if (obw == 3) % obwiednia 3 - exp(-alfa*t)
- 47
- alfa = 5;
- 48
- w = exp(-alfa * t);
- 49
- end
- 50
- 51
- if (obw ~= 0) % sygna³ z obwiedni¹
- 52
- s = s .* w;
- 53
- end
- 54
- 55
- if (itest == 1) % TEST 1 - kasowanie interferencji
- 56
- P = 0; % brak predykcji
- 57
- x = 0.1 * sin(2 * pi * 50 * t - pi / 5); % sieæ przesuniêta w fazie
- 58
- d = s + 0.5 * sin(2 * pi * 50 * t); % sygna³ + sieæ
- 59
- end
- 60
- 61
- if (itest == 2) % TEST 2 ? odszumianie drog¹ predykcji
- 62
- P = 1; % rz¹d predykcji (do zmiany: 1,2,3,...)
- 63
- x = s + 0.25 * rand(1, Nx); % sygna³ + szum
- 64
- d =[ x(1+P:length(x)) 0 ]; % odniesieniem sygna³ "przyspieszony" o P próbek
- 65
- end
- 66
- 67
- % Rysunki sygna³ów wejœciowych
- 68
- figure(1);
- 69
- subplot(211); plot(t,x); grid; title('WE : sygna³ x');
- 70
- subplot(212); plot(t,d); grid; title('WE : sygna³ d');
- 71
- xlabel('czas [sek]');
- 72
- 73
- % Filtracja adaptacyjna
- 74
- 75
- buforX = zeros(1, M);
- 76
- h = zeros(1, M);
- 77
- y = []; % Wyjœciowy
- 78
- e = []; % B³êdu
- 79
- 80
- 81
- for i = 1 : length(x)
- 82
- buforX = [x(i) buforX(1:M-1)];
- 83
- dest = h * buforX';
- 84
- err = d(i) - dest;
- 85
- if(ialg == 1)
- 86
- h = h + (2 * mi * err * buforX); % LMS
- 87
- end
- 88
- 89
- if(ialg == 2)
- 90
- eng = bx * bx'; % NLMS
- 91
- end
- 92
- y = [y dest];
- 93
- e = [e err];
- 94
- end
- 95
- 96
- % Rysunki sygna³ów wyjœciowych
- 97
- if(ialg == 1)
- 98
- typ = 'LMS';
- 99
- end
- 100
- 101
- if(ialg == 2)
- 102
- typ = 'NLMS';
- 103
- end
- 104
- figure (2);
- 105
- subplot(211); plot(t,y); grid; title('WY : sygna³ y = dest');
- 106
- subplot(212); plot(t,e); grid; title('WY : sygna³ e = err');
- 107
- xlabel('czas [sek]');
- 108
- figure(3);
- 109
- if(itest == 1)
- 110
- subplot(111); plot(t,s,'r',t,e,'b'); grid; xlabel('czas [sek]');
- 111
- title('Orgina³ (czerwony) i wynik filtracji (niebieski) filtrem' + typ);
- 112
- end
- 113
- 114
- if(itest == 2)
- 115
- n = 1:Nx - P;
- 116
- subplot(111); plot(t(n),s(n),'r',t(n),y(n),'b'); grid; xlabel('czas [sek]');
- 117
- title('Orgina³ (czerwony) i wynik filtracji (niebieski)');
- 118
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement