Advertisement
Cieslin

Metody filtracji dzwieku

Mar 20th, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 10.18 KB | None | 0 0
  1.  
  2. %ZADANIE-1
  3. clear;
  4. N=3100; A=2   ; fx=31  ; fp=3100   ;   %Parametry sygnału
  5. dt=1/fp;                        %Okres próbkowania
  6. t=dt*(0:N-1);                   %Wektor chwil próbkowania
  7. x=A*sin(2*pi*fx*t);             %Sygnał
  8. plot(t,x,'m'); grid; title('Sygnał x(t)'); xlabel('czas [s]'); pause
  9.  
  10. % Oblicz wartości parametrów sygnału
  11.  
  12. x_sred1=mean(x), x_sred2=sum(x)/N   %wartość średnia
  13. x_max=max(x)                        %wartość max
  14. x_min=min(x)                        %wartość min
  15. x_std1=std(x), x_std2=sqrt(sum((x-mean(x)).^2)/(N-1)) %odchylenie standardowe
  16. x_e=dt*sum(x.^2)                    %energia
  17. x_moc=(1/N)*sum(x.^2)               %moc średnia
  18. x_sku=sqrt(x_moc)                   %wartość skuteczna
  19.  
  20. % Oblicz i narysuj funkcję autokorelacji R1, R2, R3 sygnału x(n)
  21.  
  22. R1=xcorr(x);                    %nieunormowana
  23. R2=xcorr(x,'biased');           %unormowaną przez długość /N
  24. R3=xcorr(x,'unbiased');         %unormowaną przez /(N-abs(k))
  25. tR=[-fliplr(t) t(2:N)]; plot(tR,R1); grid; title('Autokorelacja'); pause
  26.  
  27. %Teraz R3
  28. %for k=0:N
  29. %    R(k+1)=sum( x(1:N-k).*x(1+k:N))/(N-k);
  30. %end
  31. %R=[fliplr(R) R(2:N-1)];
  32. %plot(tR,R);grid;pause
  33.  
  34. % Narysuj część rzeczywistą, urojoną i moduł tych współczynników
  35. X=fft(x);           %szybka dyskretna transformacja Fouriera
  36. df=1/(N*dt);        %częstotliwość podstawowa f0=df=1/T=1/(N*dt)
  37. f=df*(0:N-1);       %kolejne częstotliwości
  38. subplot(311);plot(f,real(X)); grid; title('Re'); xlabel('Hz'); pause
  39. subplot(312);plot(f,imag(X)); grid; title('Im'); xlabel('Hz'); pause
  40. subplot(313);plot(f,abs(X)); grid; title('abs'); xlabel('Hz'); pause
  41. clf;
  42. plot(f(1:N/2+1),abs(X(1:N/2+1))/(N/2)); grid; title('Po skalowaniu'); pause
  43.  
  44. % Synteza sygnału na podstawie współczynników jego szeregu Fouriera i
  45. % porównanie z oryginałem
  46. xs=ifft(X);
  47. plot(t,real(x-xs)); grid; title('Różnica'); pause
  48.  
  49. %Zadanie-2
  50. s1=rand(1,N); s2=randn(1,N);
  51. s= s2;  %wybór szumu
  52. R=xcorr(s,'unbiased');
  53. plot(tR,R); grid; title('Autokorelacja szumu'); pause
  54. C=xcov(s);
  55. plot(tR,C); grid; title('Autokowariancja szumu'); pause
  56. Hs=hist(s,100); %podzielić oś [xmin,xmax] na 100 podprzedziałów
  57. plot(Hs); title('Histogram szumu'); pause
  58. S=fft(s);
  59. plot(f, abs(S)); grid; title('Widmo szumu'); xlabel('f [Hz]'); pause
  60. [Pss, fss]= psd(s,N/10,fp); %uśrednione widma odcinków sygnału o dł N/10
  61. plot(fss,Pss); grid; title('Widmo uśrednione'); xlabel('f [Hz]'); pause
  62.  
  63. %Zadanie-3
  64.  
  65. s = s2 + x;
  66. plot(t,s, 'm'); grid; title('Suma sygnalow 1 i 2'); pause
  67. R=xcorr(s, 'unbiased');
  68. plot(tR,R); grid; title('Autokorelacja sygnalow 1 i 2'); pause
  69. C=xcov(s);
  70. plot(tR,C); grid; title('Autokowariancja sygnalow 1 i 2'); pause
  71. Hs=hist(s,100);
  72. plot(Hs); title('Histogram sygnalow 1 i 2'); pause
  73.  
  74. %Zadanie-4
  75.  
  76.  
  77. s=s2 + x + (2*x);
  78. plot(t,s, 'm'); grid; title('Suma sygnalow z dodatkowa sinusoida'); pause
  79. R=xcorr(s, 'unbiased');
  80. plot(tR,R); grid; title('Autokorelacja sygnalow z dodatkowa sinusoida'); pause
  81. C=xcov(s);
  82. plot(tR,C); grid; title('Autokowariancja sygnalow z dodatkowa sinusoida'); pause
  83. Hs=hist(s,100);
  84. plot(Hs); title('Histogram sygnalow z dodatkowa sinusoida'); pause
  85.  
  86. %Zadanie-5
  87.  
  88. ampl=hamming(N)';    %przykładowa funkcja modulująca amplitudę
  89. y1=ampl.*x;
  90. plot(t,y1); grid; title('Sygnał z modulacją amplitudy'); pause
  91. ampl=exp(-10*t);        %eksponencjalna funkcja obwiedni amplitudy
  92. y2=ampl.*x;
  93. plot(t,y2); grid; title('Sygnał z modulacją amplitudy'); pause
  94.  
  95. %Zadanie-6
  96.  
  97. fx=  31; alfa=10   %wybierz, zaczynając od małych wartości; potem obserwuj
  98. y3=sin(2*pi*(fx*t+0.5*alfa*t.^2));
  99. plot(t,y3); grid; title('Sygnał z liniową modulacją częstotliwości'); pause
  100.  
  101. fx=  31; fm=  10; df=  10;         % częstotliwości - nośna, modulująca, głębokość modulacji
  102. y4=sin(2*pi*(fx*t+df*sin(2*pi*fm*t)/(2*pi*fm)));
  103. plot(t,y4); grid; title('Sygnał z sinusoidalną modulacją częstotliwości'); pause
  104.  
  105.  
  106.  
  107.     <!DOCTYPE html>
  108.     <html lang="pl">
  109.     <head>
  110.     <title>Systemy Multimedialne: treść zadania</title>
  111.     <link rel="stylesheet" type="text/css" href="../styl.css" />
  112.  
  113.     <link rel="stylesheet" type="text/css" href="../select-topic-2.css" />
  114.  
  115.     </head>
  116.     <body onselectstart="return false;">
  117.     <div id="topic-header">
  118.     <table><tr>
  119.     <td>Systemy Multimedialne</td>
  120.     <td style="text-align: center; color: silver;">192.168.0.153</td>
  121.     <td style="text-align: right;">Semestr&nbsp;6&nbsp;&nbsp;&nbsp;Grupa&nbsp;2&nbsp;&nbsp;&nbsp;Sekcja&nbsp;1</td>
  122.     </tr></table>
  123.     </div><hr class="shadow" />
  124.     <div id="topic-content">
  125.    
  126.     <h1>Wprowadzenie do metod filtracji dźwięku (I)</h1>
  127.     <img src="img/sm01-title.png" style="float: left; margin: 2pt 10pt 4pt 0; float: right;" alt="sm"/>
  128.    
  129.     <h3>1. Generacja próbek</h3>
  130.     <p>
  131.     Wygeneruj N próbek sygnału sinusoidalnego x(t)=Asin(2*pi*fx*t) o
  132.     amplitudzie A i częstotliwości fx, spróbkowanego z częstotliwością fp.
  133.     Narysuj ten sygnał.
  134.     Częstotliwość sygnału, amplitudę oraz liczbę próbek należy dobrać według schematu: </br>
  135.     <ul>
  136.     <li>fx= (numer_sekcji) + 30;</li>
  137.     <li>A= 1 + (numer_sekcji) mod 4;</li>
  138.     <li>N= [czas trwania sygnału 1s.];</li>
  139.     </ul>
  140.     </p>
  141.    
  142.     <pre><samp>
  143.     clear;
  144.     N= ; A= ; fx= ; fp= ; %Parametry sygnału
  145.     dt=1/fp; %Okres próbkowania
  146.     t=dt*(0:N-1); %Wektor chwil próbkowania
  147.     x=A*sin(2*pi*fx*t); %Sygnał
  148.     plot(t,x,'m'); grid; title('Sygnał x(t)'); xlabel('czas [s]'); pause
  149.    
  150.     % Oblicz wartości parametrów sygnału
  151.    
  152.     x_sred1=mean(x), x_sred2=sum(x)/N %wartość średnia
  153.     x_max=max(x) %wartość max
  154.     x_min=min(x) %wartość min
  155.     x_std1=std(x), x_std2=sqrt(sum((x-mean(x)).^2)/(N-1)) %odchylenie standardowe
  156.     x_e=dt*sum(x.^2) %energia
  157.     x_moc=(1/N)*sum(x.^2) %moc średnia
  158.     x_sku=sqrt(x_moc) %wartość skuteczna
  159.    
  160.     % Oblicz i narysuj funkcję autokorelacji R1, R2, R3 sygnału x(n)
  161.    
  162.     R1=xcorr(x); %nieunormowana
  163.     R2=xcorr(x,'biased'); %unormowaną przez długość /N
  164.     R3=xcorr(x,'unbiased'); %unormowaną przez /(N-abs(k))
  165.     tR=[-fliplr(t) t(2:N)]; plot(tR,R1); grid; title('Autokorelacja'); pause
  166.    
  167.     %Teraz R3
  168.     %for k=0:N
  169.     % R(k+1)=sum( x(1:N-k).*x(1+k:N))/(N-k);
  170.     %end
  171.     %R=[fliplr(R) R(2:N-1)];
  172.     %plot(tR,R);grid;pause
  173.    
  174.     % Oblicz współczynniki zespolonego szeregu Fouriera dla tego sygnału.
  175.     % Narysuj część rzeczywistą, urojoną i moduł tych współczynników
  176.     X=fft(x); %szybka dyskretna transformacja Fouriera
  177.     df=1/(N*dt); %częstotliwość podstawowa f0=df=1/T=1/(N*dt)
  178.     f=df*(0:N-1); %kolejne częstotliwości
  179.     subplot(311);plot(f,real(X)); grid; title('Re'); xlabel('Hz'); pause
  180.     subplot(312);plot(f,imag(X)); grid; title('Im'); xlabel('Hz'); pause
  181.     subplot(313);plot(f,abs(X)); grid; title('abs'); xlabel('Hz'); pause
  182.     clf;
  183.     plot(f(1:N/2+1),abs(X(1:N/2+1))/(N/2)); grid; title('Po skalowaniu'); pause
  184.    
  185.     % Synteza sygnału na podstawie współczynników jego szeregu Fouriera i
  186.     % porównanie z oryginałem
  187.     xs=ifft(X);
  188.     plot(t,real(x-xs)); grid; title('Różnica'); pause
  189.    
  190.     </samp></pre>
  191.    
  192.    
  193.     <h3>2. Generacja próbek i analiza sygnału</h3>
  194.     <p>
  195.     Wygeneruj N próbek szumu o rozkładzie równomiernym i normalnym.
  196.     Wyznacz dla nich funkcję autokorelacji, autokowariancji, histogram,
  197.     szereg Fouriera i periodogram
  198.     </p>
  199.     <pre><samp>
  200.     s1=rand(1,N); s2=randn(1,N);
  201.     s= ; %wybór szumu
  202.     R=xcorr(s,'unbiased');
  203.     plot(tR,R); grid; title('Autokorelacja szumu'); pause
  204.     C=xcov(s);
  205.     plot(tR,C); grid; title('Autokowariancja szumu'); pause
  206.     Hs=hist(s,100); %podzielić oś [xmin,xmax] na 100 podprzedziałów
  207.     plot(Hs); title('Histogram szumu'); pause
  208.     S=fft(s);
  209.     plot(f, abs(S)); grid; title('Widmo szumu'); xlabel('f [Hz]'); pause
  210.     [Pss, fss]= psd(s,N/10,fp); %uśrednione widma odcinków sygnału o dł N/10
  211.     plot(fss,Pss); grid; title('Widmo uśrednione'); xlabel('f [Hz]'); pause
  212.     </samp></pre>
  213.    
  214.     <h3>3. Sumowanie oraz analiza sygnałów</h3>
  215.     <p>
  216.     Dodaj sygnały z pkt 1 i 2. Wyznacz i narysuj funkcję autokorelacji,
  217.     autokowariancji i histogram sygnału sumarycznego.
  218.     </p>
  219.    
  220.    
  221.     <h3>4. Sumowanie oraz analiza sygnałów cd.</h3>
  222.     <p>
  223.     Powtórz operacje z pkt 3. po dodaniu do sygnału 1+2 jeszcze jednej
  224.     sinusoidy o zadanej częstotliwości f2x
  225.     </p>
  226.    
  227.     <h3>5. Modulacja AM</h3>
  228.     <p>
  229.     Zmoduluj w amplitudzie sygnał sinusoidalny z pkt 1.
  230.     </p>
  231.    
  232.     <samp><pre>
  233.     ampl=hamming(N)'; %przykładowa funkcja modulująca amplitudę
  234.     y1=ampl.*x;
  235.     plot(t,y1); grid; title('Sygnał z modulacją amplitudy'); pause
  236.     ampl=exp(-10*t); %eksponencjalna funkcja obwiedni amplitudy
  237.     y2=ampl.*x;
  238.     plot(t,y2); grid; title('Sygnał z modulacją amplitudy'); pause
  239.     </samp></pre>
  240.    
  241.    
  242.     <h3>6. Modulacja FM</h3>
  243.     <p>
  244.     Wygeneruj sygnał sinusoidalny z liniową modulacja częstotliwości
  245.     (w=wx+alfat) oraz z sinusoidalną modulacją częstotliwości (w=wx+sin(wmt))
  246.     </p>
  247.    
  248.     <samp><pre>
  249.     fx= ; alfa=10 %wybierz, zaczynając od małych wartości; potem obserwuj
  250.     y3=sin(2*pi*(fx*t+0.5*alfa*t.^2));
  251.     plot(t,y3); grid; title('Sygnał z liniową modulacją częstotliwości'); pause
  252.    
  253.     fx= ; fm= ; df= ; % częstotliwości - nośna, modulująca, głębokość modulacji
  254.     y4=sin(2*pi*(fx*t+df*sin(2*pi*fm*t)/(2*pi*fm)));
  255.     plot(t,y4); grid; title('Sygnał z sinusoidalną modulacją częstotliwości'); pause
  256.     </samp></pre>
  257.    
  258.    
  259.     <h3>7. Składanie sygnałów</h3>
  260.     <p>
  261.     Sklej dwa sygnały.
  262.     </p>
  263.     <samp><pre>
  264.     y5=[y1 y4];
  265.     plot(y5); grid; title('sygnał sklejony'); pause
  266.     </samp></pre>
  267.    
  268.    
  269.     <h3>8. Splot sygnałów</h3>
  270.     <p>
  271.     Spleć ze sobą dwa sygnały, czyli dokonaj filtracji jednego z nich
  272.     przez drugi
  273.     </p>
  274.     <samp><pre>
  275.     T= ; N= ; %czas trwania sygnałów, liczba próbek
  276.     dt=T/N;
  277.     t=dt*(0:N); %okres próbkowania, kolejne chwile czasowe
  278.     f1= ; f2= ; % częstotliwości sinusoid f1 jak w punkcie 1, f2 = 2.5*f1;
  279.     x=sin(2*pi*f1*t)+0.5*sin(2*pi*f2*t); %sygnał filtrowany: zawiera składowe o częstotliwości f1 i f2
  280.     ffilt= ; % częstotliwość sygnału filtrującego
  281.     h=sin(2*pi*ffilt*t).*exp(-4*t); %sygnał filtrujący
  282.     y=conv(x,h) %operacja filtracji, splot
  283.     subplot(311);plot(t,x); grid; title('Sygnał WE x(t)'); pause
  284.     subplot(312);plot(t,h); grid; title('Odp impulsowa'); pause
  285.     subplot(313);plot(t,y(1:N+1)); grid; title('Sygnał WY'); pause
  286.     </samp></pre>
  287.    
  288.     <h3>9. Kwantyzacja</h3>
  289.     <p>
  290.     Skwantuj sygnał x(t) z pkt.8
  291.     </p>
  292.    
  293.     </div>
  294.     </body>
  295.     </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement