2020年8月24日月曜日

python3で『QPSK変調&復調』

 興味の無い方には全く役に立たないでしょう。

SDRによる無線処理が必要な方の為に参考資料として

Webに出しておきます。

import numpy as np 

import matplotlib.pyplot as plt 

import scipy.signal as sg

from scipy.signal import upfirdn


N=50 # Number of symbols to transmit

L=15 # oversampling factor,L=Tb/Ts

Fc=1000 # carrier 

Fs=L*Fc # sampling rate


#random data make

dat = np.random.randint(2, size=N) 

print(dat)


#NRZ encoder

s_bb = upfirdn(h=[1] * L,x = (2 * dat)-1, up = L)

t = np.arange(0,len(dat) * L)


carrier = np.cos(2*np.pi*Fc * t/ Fs + np.pi/2)


wave = s_bb * carrier


#plt.plot(wave[0:200])

#plt.show()


#constellation

#plt.plot(np.real(s_bb),np.imag(s_bb),'o')

#plt.show()


asig = wave * carrier


#demodulation

x = np.real(asig)

#low pass filter

x = np.convolve(x,np.ones(L))

x = x[L-1:-1:L]


#

x[x > 0] = 1

x[x < 0] = 0


plt.plot(x)

plt.show()

print(x)


0 件のコメント:

コメントを投稿