300

Filtracja sygnałów o nieznanych parametrach zaszumionych szumem białym

Spotykamy się w wielu przypadkach z potrzebą przefiltrowania sygnału który został poddany „wpływowi otoczenia”. W przypadku sygnałów natury elektrycznej spotykamy takie wpływy jak indukcyjność, przydźwięki, rozpraszanie się fal, etc. Są to dla nas składowe niepożądane w sygnale mierzonym. Staramy się te wpływy otoczenia wyeliminować separując przewody, używając filtrów ferrytowych. Co prawda polepsza to nasz sygnał, ale nie jest w stanie wyeliminować wszystkich jego defektów. Mierzony sygnał też jest narażony na niepoprawną pracę przetwornika pomiarowego który w stanie ustalonym pokazuje nam wartość zmieniającą się o jeden bit.

Powszechnie stosowanym rozwiązaniem jest użycie filtru dolnoprzepustowego gdyż w większości przypadków zakłócenia sygnału mają częstotliwość wyższa niż składowe sygnału bazowego. Takie rozwiązanie jest bardzo fajne jeżeli znamy częstotliwości składowe oraz są one względnie niskie.

Poważny problem zaczyna się w momencie gdy składowe sygnału nie są znane. Istnieje wtedy możliwość wytłumienia składowej z której składa się sygnał bazowy. Należało by zaprojektować taki filtr który sprawdzał by się w wielu przypadkach w których nie są znane informacje o sygnale. Problem wydaje się nie do rozwiązania, ale to błędne założenie.

W niniejszym artykule przedstawiono porównanie pracy filtrów dolno-przepustowych, filtrów adaptacyjnych i optymalnego filtru Wienera.

Sygnał bazowy

Załóżmy, że nie znamy wszystkich informacji o sygnale. Wiemy za to jakie jest jego próbkowanie (20ksps). Sygnał bazowy trwa 1 sekundę. Ponadto wiemy, że sygnał składa się z dziesięciu składowych harmonicznych które występują w zakresie. Wielomian opisujący sygnał bazowy można wyrazić poprzez.

 S = \sum_{i=1}^{N=10} A_i \sin ( 2 \pi f_i )
%%  Sygnal bazowy
    %   Probkowanie 20ksps
    F_s = 20000;
    %   Czas trwania sygnalu 2 s
    t_final = 1;
    %   Wektor czasu
    t = 0 : ( 1 / F_s ) : t_final - ( 1 / F_s );
    t=t';
    L = length( t );

    n1 = 0;
    n2 = 0.05;

    Amplitude = abs( randn(10,1) * 10 ) + 1;
    Frequency = abs( randn(10,1) * 1000 ) + 10;

    disp('Based Amplitude:')
    Amplitude
    disp('Based Frequency:')
    Frequency
    Signal = 0;
    for i = 1 : length( Amplitude )
        Signal = Signal + ...
            Amplitude(i) * sin( 2 * pi * t * Frequency(i) );
    end

 

Based_signal

Based_signal_fft

Zakłócenia są szumem białym czyli o widmie płaskim . Ponadto aby sygnał nie był możliwy do wykorzystania, amplituda szumu jest zbliżona do amplitudy składowych harmonicznych.

Signal_noise

Signal_noise_fft

Sygnał wykorzystywany do badania filtrów jest sumą sygnału bazowego i sygnału zakłócenia v1.

 X = S + v1
v = 10*randn(L,1);
ar = [1, 1/2];
v1 = filter(1,ar,v*5); 
Signal_2 = Signal + v1;

 

Tak powstały sygnał bez jakiegokolwiek opisu statystycznego jest nierozpoznawalny jedynie opis statystyczny uzyskany na przykład przy użyciu szybkiej transformaty Fouriera.

Based_signal_with_noise

Based_signal_with_noise_fft

Projektowanie filtrów dolnoprzepustowych

Podstawowym podejściem do filtracji tego typu sygnału jest zaprojektowanie filtra dolnoprzepustowego o wysokiej częstotliwości odcięcia (1300 Hz ) i paśmie przepustowym (1000 Hz ). Wszystkie filtry użyte do badania posiadają zafalowanie w paśmie przepustowym rzędu 0.8 dB i tłumienie na poziomie 50 dB .

Filtry użyte do badań: filtr Butterwortha, Chebyszewa I rodzaju, Chebyszewa II rodzaju, Equiripple oraz Eliptyczny.

 

d = fdesign.lowpass('Fp,Fst,Ap,Ast',F_pass,F_stop,R_pass,R_stop,F_s);

mc_make_filter(d, 'butter', Signal, Signal_2, t)
mc_make_filter(d, 'cheby1', Signal, Signal_2, t)
mc_make_filter(d, 'cheby2', Signal, Signal_2, t)
mc_make_filter(d, 'equiripple', Signal, Signal_2, t)
mc_make_filter(d, 'ellip', Signal, Signal_2, t)
mc_make_filter(d, 'ifir', Signal, Signal_2, t)
mc_make_filter(d, 'kaiserwin', Signal, Signal_2, t)

 

 

%%  mc_make_filter
%   Mariusz Czajkowski
%   21.12.2014
%   www.uengineering.net
%   m.czajkowski@uengineering.net

function [hd] = mc_make_filter( d, FilterType, base, x, t )
    %   Tworzenie filtru
    hd = design(d,FilterType);
    
%%  Wynik filtracji 
    y = filter(hd, x);
    
    figure()
    subplot(2,1,1)
    plot(t, base, '-',...
        t, x, ':',...
        t, y, '--')
    title('Results of filtration')
    xlabel('Time [s]')
    ylabel('Amplitude')
    legend('Base signal', 'Noised signal', 'Filtered signal')
    xlim([0 0.05])
    
    subplot(2,1,2)
    plot(t, base, '-',...
        t, x, ':',...
        t, y, '--')
    title('Results of filtration')
    xlabel('Time [s]')
    ylabel('Amplitude')
    legend('Base signal', 'Noised signal', 'Filtered signal')
    xlim([0.1 0.105])
    
    n = 2^12;    
    figure()
    subplot(3,1,1)
    fft_analys(base, t, n);
    title('FFT analisys of base signal')
    xlim([0 5000])
    
    subplot(3,1,2)
    fft_analys(x, t, n);
    title('FFT analisys of noised signal')
    xlim([0 5000])
    
    subplot(3,1,3)
    fft_analys(y, t, n);
    title('FFT analisys of filtered signal')
    xlim([0 5000])
end

 

Filtr Butterworth’a

Filter_rezults_butter

Filter_rezults_fft_butter

Filtr Chebyszewa I rodzaju

Filter_rezults_cheby1

Filter_rezults_fft_cheby1

Chebyszewa II rodzaju

Filter_rezults_cheby2

Filter_rezults_fft_cheby2

Filtr Eliptyczny

Filter_rezults_ellip

Filter_rezults_fft_ellip

Filtr Equiripple

Filter_rezults_equiripple

Filter_rezults_fft_equiripple

Z racji nie znania częstotliwości składowych wyższe składowe zostały stłumione przez filtry. Pokazuje to wadę używania takiego rozwiązania.

Filtry adaptacyjne

Do zaprojektowania filtrów adaptacyjnych użyto wzoru szumu bazowego v2 o innych parametrach niż szum v1 . Różnicę pomiędzy szumami przedstawiono na rysunku:

Reference_signal

Do projektowania filtrów adaptacyjnych użyto algortymów LMS I NLMS.

%%  Konstruowanie filtru adaptacyjnego
LL = 7;                              % Ilosc wspolczynnikow filtru adaptacyjnego
hlms = adaptfilt.lms(LL);            % Filtr adaptacyjny FIR z uzyciem LMS
hnlms = adaptfilt.nlms(LL);          % Znormalizowany filtr najmniejszej średniej kwadratów

%%  Wybranie wielkosci kroku
[mumaxlms,mumaxmselms]   = maxstep(hlms,Signal_2)  % Maksymalny krok dla filtrow adaptacyjnych
[mumaxnlms,mumaxmsenlms] = maxstep(hnlms);  

%%  Ustawienei wielkosci kroku
hlms.StepSize  = mumaxmselms/30;    
hnlms.StepSize = mumaxmsenlms/20;   
                                  
%%  Projektowanie filtrow adaptacyjnych
[ylms,elms] = filter(hlms,v2,Signal_2);    
[ynlms,enlms] = filter(hnlms,v2,Signal_2);

 

Results

 

Filtr optymalny

Filtr optymalny Wienera bazuje na splocie funkcji korelacji. Oznacza to, że nie bierze on pod uwagę przebiegu sygnału tylko momenty statystyczne, przez co wycięcie szumu białego jest o wiele łatwiejsze.

%%  Filtr optymalny
bw = firwiener(L-1,v2,Signal_2);           % Optymalny filtr FIR Wienera
yw = filter(bw,1,v2);               % Estymata sygnalu zaszumionego
ew = Signal_2 - yw;                        % Estymata rzeczywistego sygnalu

Results_1

Results_2

Results_FFT

 

Podsumowanie

Analizując wykresy FFT dla poszczególnych filtrów można zauważyć, że optymalny filtr Wienera doskonale poradził sobie z zadaniem usuwając większość szumów oraz pozostawiając składowe harmoniczne sygnału.

 

 

 

 

 

 

Mariusz Czajkowski

Wykształcenie: magister inżynier Automatyki i Robotyki. Zainteresowania techniczne: Programowanie, Elektronika, Mikrokontrolery, Sterowniki PLC.

300 Comments

  1. Pingback: A片
  2. Pingback: meriking
  3. Pingback: madridbet
  4. Pingback: meritking
  5. Pingback: grandpashabet
  6. Pingback: fuck google
  7. Pingback: sex
  8. Pingback: madridbet
  9. Pingback: porn
  10. Pingback: meritking
  11. Pingback: madridbet
  12. Pingback: meritking
  13. Pingback: grandpashabet
  14. Pingback: meritking
  15. Pingback: meritking
  16. Pingback: madridbet
  17. Pingback: child porn
  18. Pingback: fuck google
  19. Pingback: meritking
  20. Pingback: izmir escort
  21. Pingback: porn
  22. Pingback: bağcılar escort
  23. Pingback: porn
  24. Pingback: çeşme transfer
  25. Pingback: get cialis online
  26. Pingback: expired cialis
  27. Pingback: buy cialis toronto
  28. Pingback: cialis free coupon
  29. Pingback: türk porno seks
  30. Pingback: rx pharmacy viagra
  31. Pingback: valacyclovir sz
  32. Pingback: lisinopril study
  33. Pingback: yasam ayavefe
  34. Pingback: child porn
  35. Pingback: porn
  36. Pingback: porno izle
  37. Pingback: augmentin generics
  38. Pingback: travesti.site
  39. Pingback: diltiazem er 60 mg
  40. Pingback: remeron 45 mg
  41. Pingback: actos dexuales
  42. Pingback: acarbose prandase
  43. Pingback: porn
  44. Pingback: generic ivermectin
  45. Pingback: synthroid rosacea
  46. Pingback: animal porn
  47. Pingback: grandpashabet
  48. Pingback: child porn
  49. Pingback: child porn
  50. Pingback: child porn
  51. Pingback: betgross giriş
  52. Pingback: lugabet giriş
  53. Pingback: animal porn
  54. Pingback: vardenafil natural
  55. Pingback: jojobet
  56. Pingback: jojobet twitter
  57. Pingback: animal porn
  58. Pingback: ananın amı
  59. Pingback: child porn
  60. Pingback: child porn
  61. Pingback: what is trimox for
  62. Pingback: porn
  63. Pingback: Cocuk pornosu
  64. Pingback: child porn
  65. Pingback: child porn
  66. Pingback: porn
  67. Pingback: child porn
  68. Pingback: bursa travesti
  69. Pingback: sex
  70. Pingback: porn
  71. Pingback: sex historie
  72. Pingback: child porn
  73. Pingback: bmw
  74. Pingback: spam
  75. Pingback: porn
  76. Pingback: Etodolac
  77. Pingback: ankaratravesti.xyz
  78. Pingback: porno izle
  79. Pingback: child porn
  80. Pingback: iporn
  81. Pingback: porn
  82. Pingback: porn
  83. Pingback: child porn
  84. Pingback: porn
  85. Pingback: meritking
  86. Pingback: meritking
  87. Pingback: meritking
  88. Pingback: meritking
  89. Pingback: rize tumblr
  90. Pingback: spam
  91. Pingback: child porn
  92. Pingback: inovapin.com
  93. Pingback: porn
  94. Pingback: porn
  95. Pingback: spam
  96. Pingback: Konya Seo Uzmanı
  97. Pingback: football skills
  98. Pingback: child porn
  99. Pingback: child porn
  100. Pingback: child porn
  101. Pingback: child porn
  102. Pingback: porn
  103. Pingback: ankara psikolog
  104. Pingback: child porn
  105. Pingback: porn
  106. Pingback: porn
  107. Pingback: child porn
  108. Pingback: meritking giriş
  109. Pingback: meritking gir
  110. Pingback: meritking news
  111. Pingback: silivri avukat
  112. Pingback: porn
  113. Pingback: porn
  114. Pingback: child porn
  115. Pingback: buy levitra dosage
  116. Pingback: tadalafil used for
  117. Pingback: porn
  118. Pingback: hp servis izmir
  119. Pingback: child porn
  120. Pingback: porn
  121. Pingback: child porn
  122. Pingback: grandpashabet
  123. Pingback: illevitrain.com
  124. Pingback: canlı maç izle
  125. Pingback: strumectol.com
  126. Pingback: dapoxe.com
  127. Pingback: levitrafrance.com
  128. Pingback: kingroyal porna
  129. Pingback: child porn
  130. Pingback: porn
  131. Pingback: child porn
  132. Pingback: child porn
  133. Pingback: kingroyal porn
  134. Pingback: spam
  135. Pingback: child porn