Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.23 KB | None | 0 0
  1. import numpy
  2. import math
  3. import matplotlib.pyplot as plt
  4.  
  5.  
  6. def ask(t, m):
  7.     A1 = 0
  8.     A2 = A
  9.  
  10.     if m == '0':
  11.         return A1 * math.sin(2 * math.pi * fn * t / N)
  12.     else:
  13.         return A2 * math.sin(2 * math.pi * fn * t / N)
  14.  
  15.  
  16. def fsk(t, m):
  17.     fn1 = fn
  18.     fn2 = 2 * fn
  19.  
  20.     if m == '0':
  21.         return A * math.sin(2 * math.pi * fn1 * t / N)
  22.     else:
  23.         return A * math.sin(2 * math.pi * fn2 * t / N)
  24.  
  25.  
  26. def psk(t, m):
  27.     ph1 = 0
  28.     ph2 = math.pi
  29.  
  30.     if m == '0':
  31.         return A * math.sin(2 * math.pi * fn * t / N + ph1)
  32.     else:
  33.         return A * math.sin(2 * math.pi * fn * t / N + ph2)
  34.  
  35.  
  36. def filteringASK(signal):
  37.     tab = []
  38.  
  39.     for i in signal:
  40.         tab.append(abs(i))
  41.  
  42.     return tab
  43.  
  44.  
  45. def filteringPSK(signal):
  46.     tab = []
  47.  
  48.     k = 0
  49.     for i in numpy.arange(0, N, Tb):
  50.         if signal[k+1] < 0:
  51.             minus = 1
  52.         else:
  53.             minus = -1
  54.  
  55.         for j in numpy.arange(0, Tb, h):
  56.             tab.append(minus * abs(signal[k]))
  57.             k = k + 1
  58.  
  59.     return tab
  60.  
  61.  
  62. def filteringFSK1(signal):
  63.     tab = []
  64.  
  65.     for i in signal:
  66.         tab.append(abs(i))
  67.  
  68.     return tab
  69.  
  70.  
  71. def filteringFSK2(signal):
  72.     tab = []
  73.  
  74.     for i in signal:
  75.         tab.append(-abs(i))
  76.  
  77.     return tab
  78.  
  79.  
  80. def smallSquare(signal, a, b):
  81.     j = 0
  82.  
  83.     summary = 0
  84.     for e in x:
  85.         if e >= b - h:
  86.             break
  87.  
  88.         if e < a:
  89.             j = j + 1
  90.             continue
  91.  
  92.         summary = summary + signal[j] * h
  93.         j = j + 1
  94.  
  95.     return summary
  96.  
  97.  
  98. m = '0110101101001101101100101101110111010110'
  99.  
  100. N = 2.0
  101. Tb = N / len(m)
  102. h = 0.001
  103.  
  104. A = 1
  105. fn = N / Tb
  106. ph = 0
  107.  
  108. x = numpy.arange(0, N, h)
  109.  
  110. ASK = []
  111. FSK = []
  112. PSK = []
  113.  
  114. index = 0
  115. for i in x:
  116.     index = int(i / Tb)
  117.  
  118.     ASK.append(ask(i, m[index]))
  119.     FSK.append(fsk(i, m[index]))
  120.     PSK.append(psk(i, m[index]))
  121.  
  122.  
  123. filterASK = filteringASK(ASK)
  124. filterPSK = filteringPSK(PSK)
  125.  
  126. pASK = []
  127. pPSK = []
  128.  
  129. i = 0
  130. while i < N:
  131.     integralASK = smallSquare(filterASK, i, i + Tb)
  132.     integralPSK = smallSquare(filterPSK, i, i + Tb)
  133.  
  134.     pASK.append(integralASK)
  135.     pPSK.append(integralPSK)
  136.  
  137.     i = i + Tb
  138.  
  139. hASK = 0
  140. hPSK = 0
  141.  
  142. mASK = []
  143. mPSK = []
  144.  
  145. strASK = ''
  146. strPSK = ''
  147.  
  148. for i in pASK:
  149.     if i > hASK:
  150.         bit = 1
  151.     else:
  152.         bit = 0
  153.  
  154.     strASK = strASK + str(bit)
  155.  
  156.     for j in numpy.arange(0, Tb, h):
  157.         mASK.append(bit)
  158.  
  159. for i in pPSK:
  160.     if i > hPSK:
  161.         bit = 1
  162.     else:
  163.         bit = 0
  164.  
  165.     strPSK = strPSK + str(bit)
  166.  
  167.     for j in numpy.arange(0, Tb, h):
  168.         mPSK.append(bit)
  169.  
  170. filterFSK1 = filteringFSK1(FSK)
  171. filterFSK2 = filteringFSK2(FSK)
  172.  
  173. pFSK = []
  174.  
  175. i = 0
  176. while i < N:
  177.     a = round(i * 100) / 100
  178.     b = round((i + Tb) * 100) / 100
  179.  
  180.     integralFSK1 = smallSquare(filterFSK1, a, b)
  181.     integralFSK2 = smallSquare(filterFSK2, a, b)
  182.  
  183.     pFSK.append(round((integralFSK1 - integralFSK2) * math.pow(10, 5)) / math.pow(10, 5))
  184.  
  185.     print a, b, pFSK[-1]
  186.  
  187.     i = i + Tb
  188.  
  189. hFSK = 0.0633
  190.  
  191. mFSK = []
  192. strFSK = ''
  193.  
  194. for i in pFSK:
  195.     if i < hFSK:
  196.         bit = 1
  197.     else:
  198.         bit = 0
  199.  
  200.     strFSK = strFSK + str(bit)
  201.  
  202.     for j in numpy.arange(0, Tb, h):
  203.         mFSK.append(bit)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement