Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2011 19:51:10

toksin
От:
Зарегистрирован: 2010-09-09
Сообщения: 31
Репутация: +  -1  -
Профиль   Отправить e-mail  

BPSK

Есть ли у кого опыт написания BPSK демодулятора ? Либо может посоветуете библиотеку для работы с различными видами модуляции, пытаюсь читать в книгах по ЦОС, но там все очень сухо написано, а главное почти один в один, такое ощущение, что списывают друг у друга, если посоветуете хорошую книгу, где хорошо расписано - тоже буду очень благодарен.



Офлайн

#2 Янв. 25, 2011 09:45:36

Борисенков Сергей
От:
Зарегистрирован: 2011-01-11
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

BPSK

Офлайн

#3 Фев. 3, 2011 12:32:20

toksin
От:
Зарегистрирован: 2010-09-09
Сообщения: 31
Репутация: +  -1  -
Профиль   Отправить e-mail  

BPSK

Вот, что у меня вышло с модулятором:

#-------------------------------------------------------------------------------
# Name: Nikolay
# Purpose:
#
# Author: toksin
#
# Created: 21.01.2011
# Copyright: (c) developer 2011
# Licence: Free
#-------------------------------------------------------------------------------
#
#Файл bin.txt содержит данные в виде нулей и единиц(входящая информация)
#в psk-31 используется алфавит варикод http://en.wikipedia.org/wiki/Varicode
#Файл test.wav содержит промодулированный сигнал
#
#!/usr/bin/env python

import cmath
import pylab, wave
from matplotlib import mlab
import struct

mes = []
fmes = open("bin.txt", "r").read()
for m in fmes:
mes.append(m)

s = []
amp = 5000
sampl = 11025#частота семплирования
f = 1000# частота несущей(Гц)
phase = 0
manip = 31#частота манипуляции
sampl_manip = sampl/manip

ln_mes = len(mes)*manip
if ln_mes>sampl:
ln = ln_mes/sampl +1
else:
ln = 1
for t in xrange(sampl*ln):
if t % sampl_manip == 0 and len(mes)>0 and t>0:
bit = int(mes.pop(0))
if bit == 0:
if phase == 0:
phase -= cmath.pi
else:
phase = 0
elif bit ==" ":
phase = phase
s.append(cmath.sin(2*cmath.pi*f*t/sampl+phase))
x =[]
for r in s:
x.append(r.real)
#pylab.plot([y for y in range(len(s))], x)
#pylab.show()
#print len(x)
wav_file = wave.open("test.wav", "wb")
nchannels = 1
sampwidth = 2
framerate = int(sampl)
nframes = ln_mes
comptype = "NONE"
compname = "not compressed"
wav_file.setparams((nchannels, sampwidth, framerate, nframes,
comptype, compname))

for s in x:
# write the audio frames, make sure nframes is correct
wav_file.writeframes(struct.pack('h', s*amp/2))
wav_file.close()
Вот еще вопрос - способен ли питон производить цифровую обработку сигнала, со скоростью равной С++ ? Если использовать cmath, scipy, numpy.



Офлайн

#4 Фев. 3, 2011 12:41:01

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

BPSK

чем больше расчетов запихнешь в cmath, scipy, numpy тем быстрей будет работать.



Офлайн

#5 Фев. 3, 2011 15:52:05

toksin
От:
Зарегистрирован: 2010-09-09
Сообщения: 31
Репутация: +  -1  -
Профиль   Отправить e-mail  

BPSK

Zubchick не подскажите, как реализовать фильтр нижних частот(ФНЧ) ?



Офлайн

#6 Фев. 4, 2011 14:34:28

stx
От:
Зарегистрирован: 2011-02-04
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#7 Фев. 4, 2011 15:44:31

toksin
От:
Зарегистрирован: 2010-09-09
Сообщения: 31
Репутация: +  -1  -
Профиль   Отправить e-mail  

BPSK

Вот это ссылочка, огромнейшее вам спасибо stx.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version