Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math as m
- import matplotlib.pyplot as plt
- import numpy as np
- def czasProbkowania(t,f):
- iloscProbek = int(t / (1 / f))
- time = []
- time.append(0)
- for x in range(iloscProbek):
- time.append((1 / f) * (x + 1))
- return time
- def asciiToBin(a):
- result = ""
- for i in a:
- liczba = format(i, '08b')
- result+= liczba
- return result
- def funZa(x,fn,Tb,result):
- A1 = 1
- A2 = 2
- T = czasProbkowania(Tb,20)
- T.pop()
- for t in T:
- if(x == "0"):
- result.append(A1 * m.sin(2*m.pi*fn*t))
- else:
- result.append(A2 * m.sin(2*m.pi*fn*t))
- return result
- def Za(X,T,fn):
- M = len(X)
- Tb = T / M
- result = []
- for x in X:
- funZa(x,fn,Tb,result)
- return result
- def funZf(x,N,Tb,result):
- A1 = 1
- f1 = N+1/Tb
- f2 = N+2/Tb
- T = czasProbkowania(Tb,20)
- T.pop()
- for t in T:
- if(x == "0"):
- result.append(A1 * m.sin(2 * m.pi * f1 * t))
- else:
- result.append(A1 * m.sin(2 * m.pi * f2 * t))
- return result
- def Zf(X,T,N):
- M = len(X)
- Tb = T / M
- result = []
- for x in X:
- funZf(x,N,Tb,result)
- return result
- def funZp(x,fn,Tb,result):
- A1 = 1
- T = czasProbkowania(Tb,20)
- T.pop()
- for t in T:
- if(x == "0"):
- result.append(A1 * m.sin(2*m.pi*fn*t))
- else:
- result.append(A1 * m.sin(2*m.pi*fn*t + m.pi))
- return result
- def Zp(X,T,fn):
- M = len(X)
- Tb = T / M
- result = []
- for x in X:
- funZp(x,fn,Tb,result)
- return result
- def funMzad2(X,fs):
- mx = []
- Mprim = []
- fk = []
- for i in range(int(len(X)/2)):
- mx.append(m.sqrt(m.pow(X[i].real, 2) + m.pow(X[i].imag,2)))
- if(mx[i] == 0):
- Mprim.append(10 * m.log10(0.000001))
- else:
- Mprim.append(10 * m.log10(mx[i]))
- fk.append(i * (fs / len(X)))
- return fk,Mprim
- def szerokoscPasma(X,Y):
- maxY = max(Y)
- minY = maxY - 3
- leftY = Y[1]
- rightY = Y[-1]
- leftX = 0
- rightX = 0
- for y in Y:
- if (y == minY):
- leftY = y
- if (leftY == minY):
- break
- if(leftY <= minY and y >= minY):
- break
- if(leftY >= minY and y <= minY):
- break
- leftY = y
- for y in reversed(Y):
- if(y == minY):
- rightY = y
- if(rightY == minY):
- break
- if (rightY <= minY and y >= minY):
- break
- if (rightY >= minY and y <= minY):
- break
- rightY = y
- leftX = X[Y.index(leftY)]
- rightX = X[Y.index(rightY)]
- width = rightX - leftX
- return leftX,rightX,width
- litrery = [10,45]
- T = 8*len(litrery)
- M = 8*len(litrery)
- N = 1
- Tb = T/M
- fn = N/Tb
- bits = asciiToBin(litrery)
- result = Za(bits,T,fn)
- Tp = czasProbkowania(T,20)
- Tp.pop()
- plt.plot(Tp,result)
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement