Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. "ΔΕΥΤΕΡΟ ΕΡΩΤΗΜΑ @ΚΒΑΝΤΙΣΤΗΣ"
  2.  
  3. t = np.linspace(0, 1/fm, 500) # δημιουργία άξονα χρόνου για το σήμα μας με 4 περιόδους
  4. # όταν το σήμα τετραγωνίζεται διπλασιάζεται τόσο το πλάτος όσο και η συχνότητα οπότε κάτω έχουμε
  5. # συχνότητα fm/2
  6. triangle = 2*signal.sawtooth(2*np.pi*fm/2*t, 0.5) # δημιουργία τριγωνικής περιοδικής παλμοσειράς
  7. sq_triangle = triangle * triangle # δημιουργία του τετρα΄γώνου της τριγωνικής παλμοσειράς
  8.  
  9.  
  10. samples_fs1_y = 45*1 # 45 δείγματα ανα περίοδο ( επι 4 αφού έχουμε 4 περι΄όδους )
  11. t1 = np.linspace(0, 1/fm, samples_fs1_y) # δημ. του άξονα χρόνου για την πρώτη δειγματοληψία
  12. sq_triangle_fs1_y = signal.resample(sq_triangle,samples_fs1_y) # πρώτο δειγματοληπτημένο σήμα
  13. A = 4
  14. # Αν fm άρτιο n = 4 αλλίως n = 6 (κβάντιση με 4 bits και 5 bits αντίστοιχα)
  15. if sum_am % 2 == 0:
  16. num=4
  17. else:
  18. num=5
  19.  
  20. L = 2**num
  21. d=(2*A)/(L) # βήματα κβάντισης
  22.  
  23. ks1=d*np.floor(sq_triangle_fs1_y/d)+d/2 #εξίσωση mid-riser κβαντιστή
  24.  
  25. def gray_code(n):
  26. if n <= 0:
  27. return []
  28. if n == 1:
  29. return ['0', '1']
  30. res = gray_code(n-1)
  31. return ['0'+s for s in res] + ['1'+s for s in res[::-1]]
  32. g = gray_code(num)
  33.  
  34. plt.figure(figsize=(9,9)) # κβαντισμένο δειγματοληπτημένο σήμα με fs1
  35. plt.yticks(np.arange(0.0,4.0,d),g[1:L])
  36. plt.xlabel('Time (s)')
  37. plt.ylabel('Δυαδικοί αριθμοί με κωδικοποίηση Gray')
  38. plt.title('Κβαντισμένη Έξοδος')
  39. plt.plot(t1,ks1,'g-');
  40. plt.show()
  41.  
  42. #Υπολογισμός τυπικής απόκλισης του σφάλματος κβάντισης
  43. #Για τα 10 πρώτα δείγματα
  44.  
  45. ks1_10s = ks1[0:10]
  46. sq_triangle_fs1_y_10s = sq_triangle_fs1_y[0:10]
  47. noise_10 = ks1_10s - sq_triangle_fs1_y_10s
  48.  
  49. #Τυπική Απόκλιση
  50. st_deviation=np.var(noise_10)
  51. st_deviation=math.sqrt(st_deviation)
  52.  
  53. print('Απόκλιση σφαλμάτων κβάντισης για τα 10 πρώτα samples: \n' ,st_deviation)
  54.  
  55. #Υπολογισμός τυπικής απόκλισης του σφάλματος κβάντισης
  56. #Για τα 20 πρώτα δείγματα
  57.  
  58. ks1_20s = ks1[0:20]
  59. sq_triangle_fs1_y_20s = sq_triangle_fs1_y[0:20]
  60. noise_20 = ks1_20s - sq_triangle_fs1_y_20s
  61.  
  62. #Τυπική Απόκλιση
  63. st_deviation=np.var(noise_20)
  64. st_deviation=math.sqrt(st_deviation)
  65.  
  66. print('Απόκλιση σφαλμάτων κβάντισης για τα 20 πρώτα samples: \n' ,st_deviation)
  67. SNR1 = 10*np.log10((np.var(sq_triangle_fs1_y_10s)/np.var(noise_10))) #SNR gia to (i)
  68. print('SNR1 = %f in dB' %SNR1)
  69.  
  70. SNR2 = 10*np.log10((np.var(sq_triangle_fs1_y_20s)/np.var(noise_20))) #SNR gia to (ii)
  71. print('SNR2 = %f in dB' %SNR2)
  72.  
  73. #BIPOLAR RZ
  74. c=''.join(g)
  75. bitstream=list(c)
  76. Amplitude = sum_am
  77.  
  78. i=0
  79. counter = 0
  80. m=np.empty(160)
  81. end = len(bitstream)
  82. t = np.arange(0.0,end/1000,0.001)
  83.  
  84. for a in bitstream :
  85. if(a == '0'):
  86. m[i]=0
  87. else:
  88. counter += 1
  89. if(counter % 2 == 1):
  90. m[i] = Amplitude
  91. else:
  92. m[i] = -Amplitude
  93.  
  94. i+=1
  95.  
  96. plt.figure(figsize=(25,10))
  97. plt.step(t,m)
  98. plt.xlabel('Time (s)')
  99. plt.ylabel('V')
  100. plt.title('Bitstream')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement