Advertisement
Cieslin

Matlab_adaptacyjne

May 29th, 2019
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.28 KB | None | 0 0
  1. WYŒCIE: y = przefiltrowany adaptacyjnie sygna³ x, e = d-y , czyli sygna³ b³êdu
  2.  4
  3.  
  4.  5
  5.  
  6. clear all;
  7.  6
  8.  
  9.  7
  10.  
  11. % Uruchom program dla wszystkich kombinacji parametrów ialg i itest
  12.  8
  13.  
  14. ialg = 1; % rodzaj algorytmu adaptacji: 1=LMS, 2=NLMS
  15.  9
  16.  
  17. itest = 2;  % test: 1 - usuwanie addytywnej interferencji (sieci)
  18.  10
  19.  
  20.             %       2 - usuwanie addytywnego szumu (za pomoc¹ liniowej predykcji)
  21.  11
  22.  
  23.            
  24.  12
  25.  
  26. % Filtr nieunormowany LMS
  27.  13
  28.  
  29. M = 50; % liczba wspó³czynników wagowych filtra adaptacyjnego
  30.  14
  31.  
  32. mi = 0.01; % wspó³czynnik szybkoœci adaptacji ( 0<mi<1)
  33.  15
  34.  
  35.  16
  36.  
  37. % Filtr unormowany NLMS
  38.  17
  39.  
  40. eng = 0.; % estymata energii poczatkowej sygnalu x, eng=>0, np. eng=0
  41.  18
  42.  
  43. beta = 1 - 1 / M; % stala szybkosci zapominania energii 0<=beta<1
  44.  19
  45.  
  46.  20
  47.  
  48. % 0 ? wszystko pamiêtam, 1 ? nic nie pamiêtam
  49.  21
  50.  
  51.  22
  52.  
  53. gamma = 0.001; % stala bezpieczeñstwa mianownika energii np. = 0.001
  54.  23
  55.  
  56.  24
  57.  
  58. % Generacja sygna³u testowego LFM (liniowa modulacja czêstotliwoœci)
  59.  25
  60.  
  61.  26
  62.  
  63. Nx = 1000; % liczba próbek
  64.  27
  65.  
  66. fpr = 1000; % czêstotliwoœæ próbkowania
  67.  28
  68.  
  69. A = 1; % amplituda
  70.  29
  71.  
  72. f0 = 0; % czêstotliwoœæ pocz¹tkowa sygna³u
  73.  30
  74.  
  75. df = 25; % przyrost czêstotliwoœci Hz/sek
  76.  31
  77.  
  78. obw = 1; % wybór obwiedni czasowej: 0=brak, 1=Gauss, 2=alfa*t, 3=exp(-alfa*t)
  79.  32
  80.  
  81. dt = 1 / fpr;
  82.  33
  83.  
  84. t = 0:dt:(Nx-1) * dt; % chwile czasowe próbkowania
  85.  34
  86.  
  87. s = A * cos(2 * pi * (f0 * t + 0.5 * df * t.^2)); % sygnal LFM
  88.  35
  89.  
  90.  36
  91.  
  92. if (obw == 1) % obwiednia 1 - krzywa Gaussa
  93.  37
  94.  
  95.     alfa = 10;
  96.  38
  97.  
  98.     w = exp(-alfa * pi * (t-0.5).^2);
  99.  39
  100.  
  101. end
  102.  40
  103.  
  104.  41
  105.  
  106. if (obw == 2) % obwiednia 2 - alfa*t
  107.  42
  108.  
  109.     alfa = 5;
  110.  43
  111.  
  112.     w = alfa * t;
  113.  44
  114.  
  115. end
  116.  45
  117.  
  118.  46
  119.  
  120. if (obw == 3) % obwiednia 3 - exp(-alfa*t)
  121.  47
  122.  
  123.     alfa = 5;
  124.  48
  125.  
  126.     w = exp(-alfa * t);
  127.  49
  128.  
  129. end
  130.  50
  131.  
  132.  51
  133.  
  134. if (obw ~= 0) % sygna³ z obwiedni¹
  135.  52
  136.  
  137.     s = s .* w;
  138.  53
  139.  
  140. end
  141.  54
  142.  
  143.  55
  144.  
  145. if (itest == 1) % TEST 1 - kasowanie interferencji
  146.  56
  147.  
  148.     P = 0; % brak predykcji
  149.  57
  150.  
  151.     x = 0.1 * sin(2 * pi * 50 * t - pi / 5); % sieæ przesuniêta w fazie
  152.  58
  153.  
  154.     d = s + 0.5 * sin(2 * pi * 50 * t); % sygna³ + sieæ
  155.  59
  156.  
  157. end
  158.  60
  159.  
  160.  61
  161.  
  162. if (itest == 2) % TEST 2 ? odszumianie drog¹ predykcji
  163.  62
  164.  
  165.     P = 1; % rz¹d predykcji (do zmiany: 1,2,3,...)
  166.  63
  167.  
  168.     x = s + 0.25 * rand(1, Nx); % sygna³ + szum
  169.  64
  170.  
  171.     d =[ x(1+P:length(x)) 0 ]; % odniesieniem sygna³ "przyspieszony" o P próbek
  172.  65
  173.  
  174. end
  175.  66
  176.  
  177.  67
  178.  
  179. % Rysunki sygna³ów wejœciowych
  180.  68
  181.  
  182. figure(1);
  183.  69
  184.  
  185. subplot(211); plot(t,x); grid; title('WE : sygna³ x');
  186.  70
  187.  
  188. subplot(212); plot(t,d); grid; title('WE : sygna³ d');
  189.  71
  190.  
  191. xlabel('czas [sek]');
  192.  72
  193.  
  194.  73
  195.  
  196. % Filtracja adaptacyjna
  197.  74
  198.  
  199.  75
  200.  
  201. buforX = zeros(1, M);
  202.  76
  203.  
  204. h = zeros(1, M);
  205.  77
  206.  
  207. y = []; % Wyjœciowy
  208.  78
  209.  
  210. e = []; % B³êdu
  211.  79
  212.  
  213.  80
  214.  
  215.  81
  216.  
  217. for i = 1 : length(x)
  218.  82
  219.  
  220.     buforX = [x(i) buforX(1:M-1)];
  221.  83
  222.  
  223.     dest = h * buforX';
  224.  84
  225.  
  226.     err = d(i) - dest;
  227.  85
  228.  
  229.     if(ialg == 1)
  230.  86
  231.  
  232.         h = h + (2 * mi * err * buforX); % LMS
  233.  87
  234.  
  235.     end
  236.  88
  237.  
  238.    
  239.  89
  240.  
  241.     if(ialg == 2)
  242.  90
  243.  
  244.         eng = bx * bx'; % NLMS
  245.  91
  246.  
  247.     end
  248.  92
  249.  
  250.     y = [y dest];
  251.  93
  252.  
  253.     e = [e err];
  254.  94
  255.  
  256. end
  257.  95
  258.  
  259.  96
  260.  
  261. % Rysunki sygna³ów wyjœciowych
  262.  97
  263.  
  264. if(ialg == 1)
  265.  98
  266.  
  267.     typ = 'LMS';
  268.  99
  269.  
  270. end
  271.  100
  272.  
  273.  101
  274.  
  275. if(ialg == 2)
  276.  102
  277.  
  278.     typ = 'NLMS';
  279.  103
  280.  
  281. end
  282.  104
  283.  
  284. figure (2);
  285.  105
  286.  
  287. subplot(211); plot(t,y); grid; title('WY : sygna³ y = dest');
  288.  106
  289.  
  290. subplot(212); plot(t,e); grid; title('WY : sygna³ e = err');
  291.  107
  292.  
  293. xlabel('czas [sek]');
  294.  108
  295.  
  296. figure(3);
  297.  109
  298.  
  299. if(itest == 1)
  300.  110
  301.  
  302.     subplot(111); plot(t,s,'r',t,e,'b'); grid; xlabel('czas [sek]');
  303.  111
  304.  
  305.     title('Orgina³ (czerwony) i wynik filtracji (niebieski) filtrem' + typ);
  306.  112
  307.  
  308. end
  309.  113
  310.  
  311.  114
  312.  
  313. if(itest == 2)
  314.  115
  315.  
  316.     n = 1:Nx - P;
  317.  116
  318.  
  319.     subplot(111); plot(t(n),s(n),'r',t(n),y(n),'b'); grid; xlabel('czas [sek]');
  320.  117
  321.  
  322.     title('Orgina³ (czerwony) i wynik filtracji (niebieski)');
  323.  118
  324.  
  325. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement