Advertisement
Cieslin

CwiczenieMatLab

Apr 3rd, 2019
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 9.17 KB | None | 0 0
  1. Systemy multimedialne
  2. Wygeneruj sygnał sinusoidalny i prostokątny dla częstotliwości tonów a1, a2 i c3 (440, 880, 1046.5 Hz). Wyświetl tony osobno a następnie zsumowane. Zaobserwuj widmo sygnałów zsumowanych (help fft). Zsumuj ze sobą wszystkie sygnały i dodaj szum. Zaobserwuj widmo sygnału. Czym różni się to widmo od poprzedniego.
  3. Przebiegi sinusoidalne
  4. clear;
  5. N=100 ;         %Ilosc probek
  6. A=10;            %Amplituda sygnalu
  7. fx=440  ;        %Czestotliwosc tonu
  8. fp=44105   ;   %Czestotliwosc
  9.  
  10. dt=1/fp;        %Okres próbkowania
  11.                        
  12. t=dt*(0:N-1);           %Wektor chwil próbkowania
  13. Sin1=A*sin(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 440Hz
  14. fx=880  ;
  15. Sin2=A*sin(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 880Hz
  16. fx=1046.5;
  17. Sin3=A*sin(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 1046.5Hz
  18.  
  19. %Wyswietlenie przebiegow utworzonych sygnalow
  20. %Polecenie subplot umożliwia wyświetlenie wszystkich wykresów w jednym oknie
  21. subplot(411);plot(t,Sin1,'m'); grid; title('Sygnał Sin1(t)'); xlabel('czas [s]'); %pause
  22. subplot(412);plot(t,Sin2,'m'); grid; title('Sygnał Sin2(t)'); xlabel('czas [s]'); %pause
  23. subplot(413);plot(t,Sin3,'m'); grid; title('Sygnał Sin3(t)'); xlabel('czas [s]'); %pause
  24. subplot(414);plot(t,Sin1+Sin2+Sin3,'m'); grid; title('Sygnał suma(t)'); xlabel('czas [s]'); %pause
  25.  
  26.  
  27. Przebiegi prostokątne
  28. clear;
  29. N=100 ;         %Ilosc probek
  30. A=10;            %Amplituda sygnalu
  31. fx=440  ;       %Czestotliwosc tonu
  32. fp=44105   ;  %Czestotliwosc
  33.  
  34. dt=1/fp;        %Okres próbkowania
  35.                        
  36. t=dt*(0:N-1);                %Wektor chwil próbkowania
  37. Pro1=A*square(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 440Hz
  38.  
  39. fx=880  ;
  40. Pro2=A*square(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 880Hz
  41.  
  42. fx=1046.5;
  43. Pro3=A*square(2*pi*fx*t);   %Utworzenie sygnalu o czestotliwosci tonu 1046.5Hz
  44.  
  45.  
  46.  
  47. %Wyswietlenie przebiegow utworzonych sygnalow
  48. %Polecenie subplot umożliwia wyświetlenie wszystkich wykresów
  49. %w jednym oknie
  50. subplot(411);plot(t,Pro1,'m'); grid; title('Sygnał Sin1(t)'); xlabel('czas [s]'); %pause
  51. subplot(412);plot(t,Pro2,'m'); grid; title('Sygnał Sin2(t)'); xlabel('czas [s]'); %pause
  52. subplot(413);plot(t,Pro3,'m'); grid; title('Sygnał Sin3(t)'); xlabel('czas [s]'); %pause
  53. subplot(414);plot(t,Pro1+Pro2+Pro3,'m'); grid; title('Sygnał suma(t)'); xlabel('czas [s]'); %pause
  54.  
  55.  
  56.  
  57.  
  58. Zarówno dla przebiegów sinusoidalnych jak i prostokątnych większa częstotliwość sygnału powoduje zwiększenie się liczby okresów poszczególnych sygnałów.
  59. Suma sygnałów sinusoidalnych jak i prostokątnych powoduje otrzymanie jednego sygnału o częstotliwości równej najwyższej częstotliwości sygnału, który został zsumowany z innymi przebiegami oraz o amplitudzie
  60. Równej sumie amplitud wszystkich zsumowanych sygnałów.
  61.  
  62. Widmo zsumowanych sygnałów
  63.  
  64. PSin=Sin1+Sin2+Sin3;        %Polaczenie sygnalow sinusoidalnych
  65. PPro=Pro1+Pro2+Pro3;       %Polaczenie sygnalow prostokatnych
  66. PSyg=PSin+PPro;               %Polaczenie polaczonych sygnalow
  67.  
  68. subplot(311);plot(t,fft(PSin),'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  69. subplot(312);plot(t,fft(PPro),'m'); grid; title('Sygnal PPro(t)'); xlabel('czas [s]');
  70. subplot(313);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
  71.  
  72. Dla przebiegu sinusoidalnego widmo uzyskane za pomocą szybkiej transformaty Fouriera przedstawia prążki znajdujące się w pierwszym i ostatnim zakresie częstotliwości.
  73. Dla przebiegu prostokątnego uzyskane widmo oprócz prążków odpowiadającym przebiegowi sinusoidalnego widoczne są także inne prążki wynikające z właściwości sygnałów prostokątnych.
  74. Połączenie sygnałów sinusoidalnych i prostokątnych pozwala na otrzymanie widma przybliżonego do widma sygnałów prostokątnych. Prążki w środkowym odcinku widma mają mniejszą amplitudę co jest spowodowane wpływem sygnału sinusoidalnego.
  75. Widmo z szumem
  76. Szum=2*rand(1,N);
  77. PSygSz=PSyg+Szum;
  78.  
  79. subplot(211);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
  80. subplot(212);plot(t,fft(PSygSz),'m');grid; title('Sygnal PSygSz(t)'); xlabel('czas [s]');
  81.  
  82.  
  83.  
  84.  
  85. Szum=5*rand(1,N);
  86. PSygSz=PSyg+Szum;
  87.  
  88. subplot(211);plot(t,fft(PSyg),'m'); grid; title('Sygnal PSyg(t)'); xlabel('czas [s]');
  89. subplot(212);plot(t,fft(PSygSz),'m');grid; title('Sygnal PSygSz(t)'); xlabel('czas [s]');
  90.  
  91.  
  92.  
  93. Dodanie szumu to sygnałów sinusoidalnego i prostokątnego powoduje uzyskanie widma w którym prążki dla poszczególnych etapów sygnału są bardziej widoczne. Dotyczy to w szczególności sygnałów sinusoidalnych w ich środkowym momencie przebiegu.
  94. Dodanie szumu powoduje zmianę widma utworzonego sygnału
  95. Badanie odpowiedzi impulsowej filtru
  96. clear
  97. echo on
  98. % OdpowiedŸ impulsowa filtru IIR 2-rzędu
  99. % Algorytm opisany rownaniem różnicowym
  100. %
  101. echo off
  102.  
  103. % Współczynniki filtracji
  104. f=880;
  105. fp=11025;
  106. k=tan(pi*f/fp); %sprawdŸ wpływ wartoœci tego wsp. na odpowiedŸ imp.
  107.  
  108. b(1)=1/(1+sqrt(2)*k+k^2);
  109. b(2)=-2/(1+sqrt(2)*k+k^2);
  110. b(3)=1/(1+sqrt(2)*k+k^2);
  111.  
  112. a(1)=1;
  113. a(2)=2*(k^2-1)/(1+sqrt(2)*k+k^2);
  114. a(3)=(1-sqrt(2)*k+k^2)/(1+sqrt(2)*k+k^2);
  115.  
  116. % Inicjalizacja próbek odpowiedzi
  117. xh1=0;xh2=0;
  118. yh1=0;yh2=0;
  119.  
  120. % Sygnał wejœciowy: skok jednostkowy
  121. N=40;  % Długoœć sygnału
  122. x(N)=0;x(1)=1;
  123.  
  124. % Algorytm próbka po próbce
  125. for n=1:N
  126. y(n)=b(1)*x(n) + b(2)*xh1 + b(3)*xh2 - a(2)*yh1 - a(3)*yh2;
  127. xh2=xh1;xh1=x(n);
  128. yh2=yh1;yh1=y(n);
  129. end;
  130.  
  131. % Wyniki
  132. subplot(2,1,1)
  133. stem(0:1:length(x)-1,x,'.');axis([-0.6 length(x)-1 -1.2 1.2]);
  134. xlabel('n \rightarrow');ylabel('x(n) \rightarrow');
  135. subplot(2,1,2)
  136. stem(0:1:length(x)-1,y,'.');axis([-0.6 length(x)-1 -1.2 1.2]);
  137. xlabel('n \rightarrow');ylabel('y(n) \rightarrow');
  138.  
  139.  
  140. Filtry
  141. Filtr Butterworha II rzędu
  142. [Z,P,K] = butter(4,0.5,'low');
  143. [Sos,G] = Zp2Sos(Z,P,K);        
  144. Hd = dfilt.df2tsos(Sos,G);  
  145.    
  146. %fvtool(Hd,Sin2);
  147. %fvtool(Hd,Sin3);
  148. [B,A]=butter(2,0.1,'low');
  149. S=filter(B,A,PSin);
  150. fvtool(Hd);
  151. %S=filter(Sos,G,PSin);
  152. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  153. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]'
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162. [Z,P,K] = butter(4,0.01,'low');
  163. [Sos,G] = Zp2Sos(Z,P,K);        
  164. Hd = dfilt.df2tsos(Sos,G);  
  165.    
  166. %fvtool(Hd,Sin2);
  167. %fvtool(Hd,Sin3);
  168. [B,A]=butter(2,0.01,'low');
  169. S=filter(B,A,PSin);
  170. fvtool(Hd);
  171. %S=filter(Sos,G,PSin);
  172. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  173. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  174.  
  175.  
  176.  
  177.  
  178.  
  179. Filtr Butterworha IV rzędu
  180. [Z,P,K] = butter(4,0.1,'low');
  181. [Sos,G] = Zp2Sos(Z,P,K);        
  182. Hd = dfilt.df2tsos(Sos,G);  
  183.    
  184. %fvtool(Hd,Sin2);
  185. %fvtool(Hd,Sin3);
  186. [B,A]=butter(4,0.1,'low');
  187. S=filter(B,A,PSin);
  188. fvtool(Hd);
  189. %S=filter(Sos,G,PSin);
  190. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  191. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198. [Z,P,K] = butter(4,0.1,'low');
  199. [Sos,G] = Zp2Sos(Z,P,K);        
  200. Hd = dfilt.df2tsos(Sos,G);  
  201.    
  202. %fvtool(Hd,Sin2);
  203. %fvtool(Hd,Sin3);
  204. [B,A]=butter(4,0.01,'low');
  205. S=filter(B,A,PSin);
  206. fvtool(Hd);
  207. %S=filter(Sos,G,PSin);
  208. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  209. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  210.  
  211.  
  212.  
  213.  
  214. Filtr II rzędu Butterworha górnoprzepustowy
  215. [Z,P,K] = butter(4,0.1,'high');
  216. [Sos,G] = Zp2Sos(Z,P,K);        
  217. Hd = dfilt.df2tsos(Sos,G);  
  218.    
  219. %fvtool(Hd,Sin2);
  220. %fvtool(Hd,Sin3);
  221. [B,A]=butter(4,0.1,'high');
  222. S=filter(B,A,PSin);
  223. fvtool(Hd);
  224. %S=filter(Sos,G,PSin);
  225. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  226. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  227.  
  228.  
  229.  
  230.  
  231. [Z,P,K] = butter(4,0.1,'high');
  232. [Sos,G] = Zp2Sos(Z,P,K);        
  233. Hd = dfilt.df2tsos(Sos,G);  
  234.    
  235. %fvtool(Hd,Sin2);
  236. %fvtool(Hd,Sin3);
  237. [B,A]=butter(4,0.5,'high');
  238. S=filter(B,A,PSin);
  239. fvtool(Hd);
  240. %S=filter(Sos,G,PSin);
  241. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  242. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254. Filtr IV rzędu Butterworha pasmowoprzepustowy
  255. [Z,P,K] = butter(4,[0.1,0.9],'stop');
  256. [Sos,G] = Zp2Sos(Z,P,K);        
  257. Hd = dfilt.df2tsos(Sos,G);  
  258.    
  259. %fvtool(Hd,Sin2);
  260. %fvtool(Hd,Sin3);
  261. [B,A]=butter(4,[0.05,0.95],'stop');
  262. S=filter(B,A,PSin);
  263. fvtool(Hd);
  264. %S=filter(Sos,G,PSin);
  265. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  266. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284. [Z,P,K] = butter(4,[0.05,0.95],'stop');
  285. [Sos,G] = Zp2Sos(Z,P,K);        
  286. Hd = dfilt.df2tsos(Sos,G);  
  287.    
  288. %fvtool(Hd,Sin2);
  289. %fvtool(Hd,Sin3);
  290. [B,A]=butter(4,[0.05,0.95],'stop');
  291. S=filter(B,A,PSin);
  292. fvtool(Hd);
  293. %S=filter(Sos,G,PSin);
  294. subplot(211);plot(t,PSin,'m'); grid; title('Sygnal PSin(t)'); xlabel('czas [s]');
  295. subplot(212);plot(t,S,'m'); grid; title('Sygnal S(t)'); xlabel('czas [s]');
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307. Pobierz plik acoustic.wav i wyświetl/odegraj go, poznaj jego parametry.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement