Advertisement
milanmetal

[SIS] Vezba 5 z2

May 21st, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 8.32 KB | None | 0 0
  1. % KURS SISTEMI I SIGNALI
  2. %
  3. % VEZBA 5: Furijeova transformacija
  4. %
  5. % OSNOVNE OSOBINE FURIJEOVE TRANSFORMACIJE
  6. %
  7. % Osnovni transformacioni parovi
  8. %
  9. clear all
  10. clc
  11.  
  12. % % % % disp ('Osnovni transformacioni parovi:');
  13. syms w
  14. syms t real
  15. syms a T positive
  16. % % % % f=dirac(t)
  17. % % % % F=fourier(f)
  18. % % % % ifourier(F,t)
  19. % % % % disp ('-------------------------------------');
  20. % % % % f=heaviside(t)
  21. % % % % F=fourier(f)
  22. % % % % ifourier(F,t)
  23. % % % % disp ('-------------------------------------');
  24. % % % % f=exp(-a*t)*heaviside(t)
  25. % % % % F=fourier(f)
  26. % % % % ifourier(F,t)
  27. % % % % disp ('-------------------------------------');
  28. % % % % f=exp(j*a*t)
  29. % % % % F=fourier(f)
  30. % % % % ifourier(F,t)
  31. % % % % disp ('-------------------------------------');
  32. % % % % f=cos(a*t)
  33. % % % % F=fourier(f)
  34. % % % % ifourier(F,t)
  35. % % % % disp ('-------------------------------------');
  36. % % % % f=sin(a*t)
  37. % % % % F=fourier(f)
  38. % % % % ifourier(F,t)
  39. % % % % disp ('-------------------------------------');
  40. %
  41. % Linearnost
  42. %
  43. % % % % disp (sprintf('\nLinearnost:'));
  44. % % % % f1=heaviside(-t);
  45. % % % % f2=sin(t);
  46. % % % % f3=dirac(t);
  47. % % % % F1=expand(fourier(2*f1-3*f2+0.5*f3))
  48. % % % % F2=expand(2*fourier(f1)-3*fourier(f2)+0.5*fourier(f3))
  49. % % % % linearnost=(F1==F2)
  50. %
  51. % pomeranje u vremenskom domenu
  52. %
  53. % % % % disp (sprintf('\nPomeranje u vremenskom domenu:'));
  54. % % % % syms T positive
  55. % % % % f1=heaviside(t)
  56. % % % % f2=heaviside(t-T)
  57. % % % % F1=fourier(f1)
  58. % % % % F2=fourier(f2)
  59. % % % % pomeranje_u_vremenu=(exp(-j*T*w)*F1==F2)
  60. %
  61. % pomeranje u frekvencijskom domenu
  62. %
  63. % % % % disp (sprintf('\nPomeranje u frekvencijskom domenu:'));
  64. % % % % syms W positive
  65. % % % % F1=pi*dirac(w)-j/w
  66. % % % % F2=pi*dirac(w-W)-j/(w-W)
  67. % % % % f1=ifourier(F1, t)
  68. % % % % f2=ifourier(F2, t)
  69. % % % % pomeranje_u_frekvencijskom_domenu=(exp(j*W*t)*f1==f2)
  70. %
  71. % skaliranje u vremenskom domenu
  72. %
  73. %                         disp (sprintf('\nSkaliranje u vremenskom domenu:'));
  74. %                         f1=dirac(t)
  75. %                         f2=dirac(a*t)
  76. %                         F1=fourier(f1)
  77. %                         F2=fourier(f2)
  78. %                         skaliranje_u_vremenu=(1/a*subs(F1,w,w/a)==F2)
  79. %
  80. % Furijeova transformacija izvoda funkcije
  81. %
  82. %                         disp (sprintf('\nFurijeova transformacija izvoda funkcije:'));
  83. %                         f1=cos(t)
  84. %                         F1=fourier(f1)
  85. %                         f2=diff(f1,t)
  86. %                         F2=fourier(f2)
  87. %                         simplify((j*w)*F1)
  88. %                         transformacija_izvoda=(F2==simplify((j*w)*F1))
  89. %
  90. % mnozenje sa t^n
  91. %
  92. % % % % disp (sprintf('\nMnozenje sa t^n:'));
  93. % % % % f1=heaviside(t)
  94. % % % % f2 = t*f1
  95. % % % % F1=fourier(f1)
  96. % % % % F2=fourier(f2)
  97. % % % % mnozenje_sa_t=(simplify(j*diff(F1,w))==simplify(F2))
  98. %
  99. % Ogledanje u vremenu
  100. %
  101. % % % % disp (sprintf('\nOgledanje u vremenu:'));
  102. % % % % f1=heaviside(t)
  103. % % % % f2=heaviside(-t)
  104. % % % % F1=fourier(f1)
  105. % % % % F2=fourier(f2)
  106. % % % % ogledanje_u_vremenu=(F2==subs(F1,w,-w))
  107. %
  108. % PRIMENA FURIJEOVE TRANSFORMACIJE U ANALIZI SISTEMA
  109. %
  110.  
  111.  
  112. disp (sprintf ('\nPrimena Furijeove transformacije u analizi sistema:'));
  113. % Nalazenje odziva sistema resavanjem RUI u vremenskom domenu
  114. u = sym ('cos(2*3.14*2*t)+0.5*cos(2*3.14*3*t)+0.5*cos(2*3.14*200*t)')
  115.  
  116. % IZVODI POBUDE
  117. u_izvod_I = diff(u)
  118. u_izvod_II = diff(u_izvod_I)
  119.  
  120. dif_jna = sprintf('D2y + 99.56681*Dy + 9070.20982*y = 0.89125*(%s)', char (u_izvod_II))
  121. resenje1 = simplify(dsolve(dif_jna,'y(0)=0, Dy(0)=0','t'))
  122. % resenje1 = simplify(dsolve(dif_jna,'y(1)=2, Dy(1)=0','t'))
  123.  
  124.  
  125. disp('=====================================================');
  126.  
  127. % Nalazenje odziva koriscenjem Furijeove transformacije
  128. syms w t G_w % ovo je oznaka za G(w), sliku od g(t)
  129. slika_prvog_izvoda_g = simplify(j*w*G_w)
  130. slika_drugog_izvoda_g = simplify((j*w)^2*G_w)
  131.  
  132. % TRAZI Grinovu FUNKCIJU.
  133. % ODZIV NA Dirakovu POBUDU...
  134. % Pri odredjivanju Grinove funkcije, svako y(t) na lijevoj strani RUI
  135. % Mijenjam sa g(t), dok svako u(t) na desnoj mijenjam sa delta(t)
  136. % Ovde imam drugi izvod pobude desno, tako da ovde trebam drugi izvod DELTE
  137. slika_pobude = fourier(dirac(2, t))     % DRUGI IZOVD Diraka
  138.  
  139. RUI_leva_strana  = collect(slika_drugog_izvoda_g + 99.56681*slika_prvog_izvoda_g + 9070.20982*G_w,'G_w')
  140. RUI_desna_strana = 0.89125*slika_pobude
  141.  
  142. % Odredjivanje prenosne karakteristike
  143. prenosna_karakteristika = solve (sprintf ('%s = %s', char(RUI_leva_strana), char(RUI_desna_strana)), 'G_w')
  144.  
  145. % Amplitudska karakteristika izrazena u decibelima
  146. % % Y = abs(X) returns the absolute value of each element in array X.
  147. % % If X is complex, abs(X) returns the complex magnitude.
  148. amplitudska_karakteristika = abs (prenosna_karakteristika);     % VRACA MODUO KOMP. BROJA
  149. amplitudska_karakteristika_db = 20*log10(amplitudska_karakteristika);
  150.  
  151. % Fazna karakteristika izrazena u stepenima
  152. %
  153. fazna_karakteristika = 180/pi*atan (imag(prenosna_karakteristika)/real(prenosna_karakteristika));
  154.  
  155. % Crtanje amplitudske i fazne karakteristike
  156. subplot (2, 1, 1), ezplot(amplitudska_karakteristika_db, [0, 1000]);
  157. axis([0 1000 -90 10])
  158. set(gca,'XScale','log');            % POSTAVLJA LOGARITAMSKU SKALU
  159.  
  160. title ('Amplitudska karakteristika sistema');
  161. xlabel('\omega [rad/s]')
  162. ylabel('20*log_1_0(|G(\omega)|) [dB]')  % Neki MATLAB-ov REGEX
  163.  
  164. subplot (2, 1, 2), ezplot(fazna_karakteristika, [0, 1000]);
  165. axis([0 1000 -90 90])
  166. set(gca,'XScale','log');
  167. title ('Fazna karakteristika sistema');
  168. xlabel('\omega [rad/s]')
  169. ylabel('arg(|G(\omega)|) [stepeni]')
  170.  
  171.  
  172. disp('=====================================================');
  173. disp('=====================================================');
  174. disp('=====================================================');
  175.  
  176. %%% --------------------------------------------------------------------
  177. %%% --------------------------------------------------------------------
  178. %%% --------------------------------------------------------------------
  179. %%% RESENJE RACUNANJEM AMPLITUDSKE I FAZNE KARAKTERISTIKE
  180. %%% PODRAZUMEVA NULTE POCETNE USLOVE, ZATO SE POCETAK ODZIVA U t-domenu
  181. %%% I ODZIVA PREKO AMPL. I FAZNE KKE RAZLIKUJE... Takodje se razlikuju
  182. %%% KADA NE KAZEM USLOVE U Nuli, nego kazem npr y(1) = nesto
  183. %%% --------------------------------------------------------------------
  184. %%% --------------------------------------------------------------------
  185. %%% --------------------------------------------------------------------
  186.  
  187.  
  188. % Racunanje odziva sistema na ulazni signal koriscenjem amplitudske i fazne
  189. % karakteristike
  190. % Vrednost amplitudske i fazne karakteristike na ucestanosti PRVE komponente iz
  191. % ulaznog signala
  192.  
  193. % % %     u = sym ('cos(2*3.14*2*t)+0.5*cos(2*3.14*3*t)+0.5*cos(2*3.14*200*t)')
  194. % % %     u = sym ('cos(2*3.14*2*t)+0.5*cos(2*3.14*3*t)+0.5*cos(2*3.14*200*t)')
  195. % % %     u = sym ('cos(2*3.14*2*t)+0.5*cos(2*3.14*3*t)+0.5*cos(2*3.14*200*t)')
  196.  
  197. w = 2*3.14*2;
  198. amplituda_1 = eval (amplitudska_karakteristika)
  199. faza_1      = eval (fazna_karakteristika)
  200.  
  201. % Vrednost amplitudske i fazne karakteristike na ucestanosti DRUGE komponente iz
  202. % ulaznog signala
  203. w = 2*3.14*3;
  204. amplituda_2 = eval (amplitudska_karakteristika)
  205. faza_2      = eval (fazna_karakteristika)
  206.  
  207. % Vrednost amplitudske i fazne karakteristike na ucestanosti TRECE komponente iz
  208. % ulaznog signala
  209. w = 2*3.14*200;
  210. amplituda_3 = eval (amplitudska_karakteristika)
  211. faza_3      = eval (fazna_karakteristika)
  212.  
  213.  
  214. % Izlazni signal sistema racunat na osnovu amplitudske i fazne
  215. % karakteristike
  216. resenje2 = amplituda_1*cos(2*3.14*2*t + faza_1) + ...
  217.            amplituda_2*0.5*cos(2*3.14*3*t + faza_2) + ...
  218.            amplituda_3*0.5*cos(2*3.14*200*t + faza_3)
  219.  
  220. figure
  221. % Crtanje ulaznog signala
  222. u = sym ('cos(2*3.14*2*t)+0.5*cos(2*3.14*3*t)+0.5*cos(2*3.14*200*t)');
  223. subplot(3,1,1)
  224. ezplot(u,[0, 2.4]);
  225. axis([0 2.4 -2 2])
  226.  
  227. xlabel('t (sec)')
  228. ylabel('u(t)')
  229. grid on
  230. title('Ulazni signal')
  231.  
  232. % Crtanje resenja dobijenog resavanjem RUI u vremenskom domenu
  233. subplot(3,1,2)
  234. ezplot(resenje1, [0, 2.4]);
  235. axis([0 2.4 -2 2])
  236. xlabel('t (sec)')
  237. ylabel('y(t)')
  238. grid on
  239. title('Resenje dobijeno u t-domenu')
  240.  
  241. % Crtanje resenja dobijenog na osnovu amplitudske i fazne karakteristike
  242. subplot(3,1,3)
  243. ezplot(resenje2, [0, 2.4]);
  244. axis([0 2.4 -2 2])
  245. xlabel('t (sec)')
  246. ylabel('y(t)')
  247. grid on
  248. title('Resenje dobijeno koriscenjem amplitudske i fazne karakteristike')
  249.  
  250.  
  251. simplify(resenje1)
  252. simplify(resenje2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement