Re: Multiplexación de señales con Python
Medardo Rodriguez (Merchise Group)
med.swl en gmail.com
Mar Nov 18 15:24:08 CET 2008
2008/11/17 Jorge Luis Betancourt González <jlbetancourt en estudiantes.uci.cu>:
> Me podrías explicar como implemento eso en Python u en otro lenguaje?
Busca los algoritmos, e implementarlo en Python es simple. Alguna vez
hice eso mientras era estudiante -hace 21 años, más o menos- en la
carrera de telecomunicaciones y automática, al menos en mi época, esos
algoritmos eran comunes en la carrera.
No obstante la idea básica es que usa un pedazo proporcional del canal
para trasmitir cada señal consistente en un stream de bits con marcas
de cambio de señal. Hay normas para esto, claro; pero el algoritmo es
simple, aquí te va la idea:
<code>
# -*- coding: utf-8 -*-
# Copyright (c) 2008 Medardo Rodriguez (Merchise Group)
#
# This is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License (GPL) as published by the
# Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
def fdm(each_channel_width, *channels):
'''
Supone cada chanel como un iterador de ints.
Cuando un canal está agotado, comienza a trasmitir ceros por su banda.
'''
exhausted_value = 0
count = len(channels)
valids = [True]*count
channels = tuple(iter(channel) for channel in channels)
finished = False
while not finished:
some_valid = False
for i in xrange(count):
channel = channels[i]
for j in xrange(each_channel_width):
if valids[i]:
try:
yield channel.next()
except StopIteration:
valids[i] = False
else:
yield exhausted_value
if valids[i]:
some_valid = True
if not some_valid:
finished = True
one = [1, 2, 3]
two = [4, 5, 6, 7, 8]
three = [9, 10]
def Test(each_channel_width):
print 'Prueba %d' % each_channel_width
res = [v for v in fdm(each_channel_width, one, two, three)]
print res
Test(1)
Test(2)
Test(3)
</code>
Recuerda buscar las normas y usar los streams adecuados; Esto es sólo una idea.
Saludos
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es