Guest User

Untitled

a guest
Dec 9th, 2019
93
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --zad1
  2. array = np.genfromtxt('spots.txt')
  3. print(array)
  4.  
  5.  
  6. w = 1
  7. n = len(array)
  8. x = range(0,len(array))
  9.  
  10. fig = plt.figure(figsize=(15, 6), dpi=80)
  11. ax = fig.add_subplot(121)
  12. ax.plot(x, array)
  13.  
  14.  
  15. signal1 = fft(array)
  16. # sygnal w dziedzinie czestotliwosci
  17. signal1 = abs(signal1)
  18. # modul sygnalu
  19.  
  20. #freqs = range(len(array))
  21. #freqs = range(0,w,int(w/n))
  22. freqs = np.arange(0,w,w/n)
  23. signal1 = abs(signal1) / len(array) * 2
  24.  
  25. ax = fig.add_subplot(122)
  26. ymax = max(signal1)
  27.  
  28. #ymax = A
  29. if (ymax > 3.0):
  30. ax.set_ylim([0.0,ymax])
  31. else:
  32. ax.set_ylim([0.0,3.0])
  33. ax.set_ylim([0,ymax])
  34.  
  35. plt.stem(freqs, signal1, '-*')
  36. ax.grid()
  37.  
  38. plt.show()
  39.  
  40. np.fft.fft(array)
  41.  
  42. --zad2
  43.  
  44. # Wyrysuj sygnał
  45. # Zdefiniuj funckję
  46. def create_signal(A = 1, A2=1, LP = 1, w = 40, f = 2.0):
  47.  
  48. T = 1.0/f
  49. # Okres sygnalu [s] (jak długo trwa jeden przebieg sinusa)
  50.  
  51. TW = 1.0/w
  52. # Okres probkowania [s] (co ile sekund pobieramy próbkę)
  53.  
  54. t = np.arange(0, LP*T, TW)
  55. # generujemy momenty, w których pobieramy próbki
  56.  
  57. n = len(t)
  58.  
  59.  
  60.  
  61. FUNC = lambda t : A*sin(2*pi*t) + A2*sin(4*pi*t)
  62. # def. funkcji (tutaj sinus)
  63.  
  64. signal = FUNC(t)
  65. # funkcja sprobkowana
  66.  
  67. fig = plt.figure(figsize=(15, 6), dpi=80)
  68. ax = fig.add_subplot(121)
  69. ## --- POMOCNICZY SYGNAL
  70. base_t = np.arange(0, LP*T, 1.0/200.0)
  71. base_signal = FUNC(base_t)
  72. print(len(base_signal))
  73. print(len(base_t))
  74. ax.plot(base_t, base_signal, linestyle='-', color='red')
  75. ax.set_ylim([min(base_signal), max(base_signal)])
  76. ## ---
  77. ax.plot(t, signal, 'o')
  78. signal1 = fft(signal)
  79. # sygnal w dziedzinie czestotliwosci
  80. signal1 = abs(signal1) / len(signal) * 2
  81. # modul sygnalu
  82.  
  83. #TW
  84. freqs = np.arange(0, w, w / n) # range HZ
  85.  
  86.  
  87. ax = fig.add_subplot(122)
  88.  
  89. #ax.set_ylim([0.0, A])
  90. ymax = max(signal1)
  91. if (ymax > 3.0):
  92. ax.set_ylim([0.0,ymax])
  93. else:
  94. ax.set_ylim([0.0,3.0])
  95. plt.stem(freqs, signal1, '-*')
  96.  
  97.  
  98. plt.xlabel("f[Hz]")
  99. plt.ylabel("A[j]")
  100.  
  101. plt.show()
  102.  
  103. create_signal(f=1.0, w=20)
  104.  
  105. --po usunieciu
  106. def create_signal(A = 1, A2=1, LP = 1, w = 40, f = 2.0):
  107.  
  108. T = 1.0/f
  109. # Okres sygnalu [s] (jak długo trwa jeden przebieg sinusa)
  110.  
  111. TW = 1.0/w
  112. # Okres probkowania [s] (co ile sekund pobieramy próbkę)
  113.  
  114. t = np.arange(0, LP*T, TW)
  115. # generujemy momenty, w których pobieramy próbki
  116.  
  117. n = len(t)
  118.  
  119.  
  120.  
  121. FUNC = lambda t : A*sin(2*pi*t) + A2*sin(4*pi*t)
  122. # def. funkcji (tutaj sinus)
  123.  
  124. signal = FUNC(t)
  125. # funkcja sprobkowana
  126.  
  127. signal = fft(signal)
  128.  
  129. #print(signal)
  130.  
  131. signal[2] = 0
  132.  
  133. signal = ifft(signal)
  134.  
  135.  
  136. fig = plt.figure(figsize=(15, 6), dpi=80)
  137. ax = fig.add_subplot(121)
  138. ## --- POMOCNICZY SYGNAL
  139. base_t = np.arange(0, LP*T, 1.0/200.0)
  140. base_signal = FUNC(base_t)
  141. print(len(base_signal))
  142. print(len(base_t))
  143. ax.plot(base_t, base_signal, linestyle='-', color='red')
  144. ax.set_ylim([min(base_signal), max(base_signal)])
  145. ## ---
  146. ax.plot(t, signal, 'o')
  147. signal1 = fft(signal)
  148. # sygnal w dziedzinie czestotliwosci
  149. signal1 = abs(signal1) / len(signal) * 2
  150. # modul sygnalu
  151.  
  152. #TW
  153. freqs = np.arange(0, w, w / n) # range HZ
  154.  
  155.  
  156. ax = fig.add_subplot(122)
  157.  
  158. #ax.set_ylim([0.0, A])
  159. ymax = max(signal1)
  160. if (ymax > 3.0):
  161. ax.set_ylim([0.0,ymax])
  162. else:
  163. ax.set_ylim([0.0,3.0])
  164. plt.stem(freqs, signal1, '-*')
  165.  
  166.  
  167. plt.xlabel("f[Hz]")
  168. plt.ylabel("A[j]")
  169.  
  170. plt.show()
  171.  
  172. create_signal(f=1.0, w=20)
RAW Paste Data