Advertisement
martinius96

Vzorkovanie signálu - MATLAB

Nov 3rd, 2021
756
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.78 KB | None | 0 0
  1. %%Vyhotovil: Martin Chlebovec, Tomáš Balog
  2. %%Predmet: Číslicové spracovanie signálov
  3. %%Skupina: Utorok: 9:10
  4. %%Zadanie: Frekvenčné spektrum a vzorkovanie signálu
  5. %%Štud. odbor: Počítačové siete
  6. %%Ročník: 1. Ing.
  7. %%Matlab: R2016b
  8. %%Popis:
  9. %%Program pre vzorkovanie signálu obsahuje generovanie náhodnej časovej oblasti, náhodnej max. frekvencie signálu a následne aj výsledného analógového (spojitého) signálu.
  10. %%V programe je možné definovať vzorkovaciu frekvenciu (nastavená 2*fmax a 3*fmax).
  11. %%Program je ďalej zapísaný funkcionálne, t.j. na základe definovanej vzorkovacej frekvencie sa vykoná proces vzorkovania.
  12. %%Pôvodný signál, hodnoty signálu vo vzorkovacej perióde a následne aj spojitý vzorkovaný signál je vykreslený do pravouhlého súradnicového systému.
  13. %%Celý program je navrhnutý v diskrétnej oblasti pre čas (t) - (x-os) začína v bode 0.
  14. %%V grafe je vyznačená aj vzorkovacia perióda (resp. funkčná vzorkovaná hodnota pôvodného signálu).
  15.  
  16. %%Vystup programu: https://i.imgur.com/iMuAkMc.png
  17. %%Clanok k projektu: http://deadawp.blog.sector.sk/blogclanok/13178/vzorkovanie-signalu-matlab.htm
  18.  
  19. close all; %% zatvor figure, okno
  20. clear all; %% Vymaž premenné a ich hodnoty
  21. rng shuffle %% náhodný generátor čísel, časový - true random generator
  22.  
  23.  
  24. tmax = randi([1 10]) %%generuj max. časovu oblasť od do
  25. t = 0:0.1:tmax; %%vytvor maticove pole
  26. f_max = randi([1 5]) %%generuj max frekvenciu (amplitúdu)
  27.  
  28. figure(1) %%vytvor jedno okno pre grafy
  29. %%generuj nahodnu maticu spojitych signalov (analógový signál)
  30. signal = (f_max)*rand(1,length(t));
  31.  
  32. %%podgraf
  33. subplot(7,1,1)
  34. %%vykreslenie spojitej krivky zelenej farby (generovaný signál)
  35. plot(t,signal,'-g');
  36. title('Náhodne generovaný analógový singál'); %%Nadpis grafu
  37. xlabel('Čas (s)'); %Popis osi x
  38. ylabel('Frekv. (Hz)'); %Popis osi y
  39. hold on
  40. grid %%hodnoty x a y osí
  41. f_vzorkovacia = 2*f_max %%vzorkovacia frekvencia 2*fmax
  42. f_vzorkovacia3 = 3*f_max %%vzorkovacia frekvencia 3*fmax
  43. f_vzorkovacia10 = 10*f_max %%vzorkovacia frekvencia 10*fmax
  44.  
  45. T_vzorkovacia = 1/f_vzorkovacia %vzorkovacia perioda pre 2*fmax
  46. T_vzorkovacia3 = 1/f_vzorkovacia3 %vzorkovacia perioda pre 3*fmax
  47. T_vzorkovacia10 = 1/f_vzorkovacia10 %vzorkovacia perioda pre 10*fmax
  48.  
  49. %%vzorkovacie kroky z diskretnej hodnoty 0 - max. casova hodnota signalu
  50. kroky = 0:T_vzorkovacia:max(t)
  51. kroky3 = 0:T_vzorkovacia3:max(t)
  52. kroky10 = 0:T_vzorkovacia10:max(t)
  53. %%interpolacia - prienik funkcnych hodnot signalu v casovych bodoch periody
  54. vzorkovanie_body = interp1(t,signal,kroky);
  55. vzorkovanie_body3 = interp1(t,signal,kroky3);
  56. vzorkovanie_body10 = interp1(t,signal,kroky10);
  57. hold on
  58.  
  59. subplot(7,1,2) %%podgraf
  60. %%čiarové reprezentácie funkčných hodnôt s bodmi amplitúdy vzorkovania
  61. stem(kroky,vzorkovanie_body,'Color','b');
  62. hold on
  63. %%úsečka opisujúca periódu vzorkovania medzi 2 vzorkovaniami
  64. plot([kroky(2) kroky(3)],[0 0],'-k','LineWidth',3);
  65. %%ukončovacie body úsečky so znakmi < --- > pre interval
  66. scatter(kroky(2),0,'<','k')
  67. scatter(kroky(3),0,'>','k')
  68. %%popis úsečky s textom Tvz
  69. text((kroky(2)/2+kroky(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
  70. title('Vzorkovaný signál --> fvz = 2*fmax'); %%nadpis podgrafu
  71. xlabel('Čas (s)'); %Popis osi x
  72. ylabel('Frekv. (Hz)'); %Popis osi y
  73. hold on
  74.  
  75. subplot(7,1,3) %%podgraf
  76. plot(kroky,vzorkovanie_body,'-b');
  77. title('Priebeh vzorkovaného signálu --> fvz = 2*fmax'); %%nadpis podgrafu
  78. xlabel('Čas (s)'); %Popis osi x
  79. ylabel('Frekv. (Hz)'); %Popis osi y
  80.  
  81. subplot(7,1,4) %%podgraf
  82. stem(kroky3,vzorkovanie_body3,'Color','r');
  83. hold on
  84. plot([kroky3(2) kroky3(3)],[0 0],'-k','LineWidth',3);
  85. scatter(kroky3(2),0,'<','k')
  86. scatter(kroky3(3),0,'>','k')
  87. text((kroky3(2)/2+kroky3(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
  88. title('Vzorkovaný signál --> fvz = 3*fmax');
  89. xlabel('Čas (s)'); %Popis osi x
  90. ylabel('Frekv. (Hz)'); %Popis osi y
  91. hold on
  92.  
  93. subplot(7,1,5) %%podgraf
  94. plot(kroky3,vzorkovanie_body3,'-r'); %vykreslenie spojitej funkcie - krivky
  95. title('Priebeh vzorkovaného signálu --> fvz = 3*fmax');
  96. xlabel('Čas (s)'); %Popis osi x
  97. ylabel('Frekv. (Hz)'); %Popis osi y
  98.  
  99.  
  100.  
  101. subplot(7,1,6) %%podgraf
  102. stem(kroky10,vzorkovanie_body10,'Color','k');
  103. hold on
  104. plot([kroky10(2) kroky10(3)],[0 0],'-k','LineWidth',3);
  105. scatter(kroky10(2),0,'<','k')
  106. scatter(kroky10(3),0,'>','k')
  107. text((kroky10(2)/2+kroky10(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
  108. title('Vzorkovaný signál --> fvz = 10*fmax');
  109. xlabel('Čas (s)'); %Popis osi x
  110. ylabel('Frekv. (Hz)'); %Popis osi y
  111. hold on
  112.  
  113. subplot(7,1,7) %%podgraf
  114. plot(kroky10,vzorkovanie_body10,'-k'); %vykreslenie spojitej funkcie - krivky
  115. title('Priebeh vzorkovaného signálu --> fvz = 10*fmax');
  116. xlabel('Čas (s)'); %Popis osi x
  117. ylabel('Frekv. (Hz)'); %Popis osi y
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement