Advertisement
czlowiekzgon

ptd2

Dec 7th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. import math as m
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. def czasProbkowania(t,f):
  5. iloscProbek = int(t / (1 / f))
  6. time = []
  7. time.append(0)
  8. for x in range(iloscProbek):
  9. time.append((1 / f) * (x + 1))
  10. return time
  11.  
  12. def asciiToBin(a):
  13. result = ""
  14. for i in a:
  15. liczba = format(i, '08b')
  16. result+= liczba
  17. return result
  18.  
  19. def funZa(x,fn,Tb,result):
  20. A1 = 1
  21. A2 = 2
  22. T = czasProbkowania(Tb,20)
  23. T.pop()
  24. for t in T:
  25. if(x == "0"):
  26. result.append(A1 * m.sin(2*m.pi*fn*t))
  27. else:
  28. result.append(A2 * m.sin(2*m.pi*fn*t))
  29. return result
  30.  
  31. def Za(X,T,fn):
  32. M = len(X)
  33. Tb = T / M
  34. result = []
  35. for x in X:
  36. funZa(x,fn,Tb,result)
  37. return result
  38.  
  39.  
  40.  
  41. def funZf(x,N,Tb,result):
  42. A1 = 1
  43. f1 = N+1/Tb
  44. f2 = N+2/Tb
  45. T = czasProbkowania(Tb,20)
  46. T.pop()
  47. for t in T:
  48. if(x == "0"):
  49. result.append(A1 * m.sin(2 * m.pi * f1 * t))
  50. else:
  51. result.append(A1 * m.sin(2 * m.pi * f2 * t))
  52. return result
  53.  
  54. def Zf(X,T,N):
  55. M = len(X)
  56. Tb = T / M
  57. result = []
  58. for x in X:
  59. funZf(x,N,Tb,result)
  60. return result
  61.  
  62.  
  63. def funZp(x,fn,Tb,result):
  64. A1 = 1
  65. T = czasProbkowania(Tb,20)
  66. T.pop()
  67. for t in T:
  68. if(x == "0"):
  69. result.append(A1 * m.sin(2*m.pi*fn*t))
  70. else:
  71. result.append(A1 * m.sin(2*m.pi*fn*t + m.pi))
  72. return result
  73.  
  74. def Zp(X,T,fn):
  75. M = len(X)
  76. Tb = T / M
  77. result = []
  78. for x in X:
  79. funZp(x,fn,Tb,result)
  80. return result
  81.  
  82. def funMzad2(X,fs):
  83. mx = []
  84. Mprim = []
  85. fk = []
  86.  
  87. for i in range(int(len(X)/2)):
  88. mx.append(m.sqrt(m.pow(X[i].real, 2) + m.pow(X[i].imag,2)))
  89. if(mx[i] == 0):
  90. Mprim.append(10 * m.log10(0.000001))
  91. else:
  92. Mprim.append(10 * m.log10(mx[i]))
  93. fk.append(i * (fs / len(X)))
  94. return fk,Mprim
  95.  
  96. def szerokoscPasma(X,Y):
  97. maxY = max(Y)
  98. minY = maxY - 3
  99. leftY = Y[1]
  100. rightY = Y[-1]
  101. leftX = 0
  102. rightX = 0
  103. for y in Y:
  104. if (y == minY):
  105. leftY = y
  106. if (leftY == minY):
  107. break
  108. if(leftY <= minY and y >= minY):
  109. break
  110. if(leftY >= minY and y <= minY):
  111. break
  112. leftY = y
  113. for y in reversed(Y):
  114. if(y == minY):
  115. rightY = y
  116. if(rightY == minY):
  117. break
  118. if (rightY <= minY and y >= minY):
  119. break
  120. if (rightY >= minY and y <= minY):
  121. break
  122. rightY = y
  123. leftX = X[Y.index(leftY)]
  124. rightX = X[Y.index(rightY)]
  125. width = rightX - leftX
  126. return leftX,rightX,width
  127.  
  128.  
  129. litrery = [10,45]
  130. T = 8*len(litrery)
  131. M = 8*len(litrery)
  132. N = 1
  133. Tb = T/M
  134. fn = N/Tb
  135. bits = asciiToBin(litrery)
  136. result = Za(bits,T,fn)
  137. Tp = czasProbkowania(T,20)
  138. Tp.pop()
  139.  
  140. plt.plot(Tp,result)
  141. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement