2016-04-20 1 views
-1

Que dois-je faire avec p1 pour que la FFT fonctionne?Comment lire un paquet UDP et le convertir en matrice que je peux FFT?

from numpy.fft import fft 
p1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
p1.recvfrom(1040) 
mat = fft(p1) 
+0

Vous devez commencer par lire la documentation du protocole UDP que vous utilisez pour déterminer comment les données sont formatées. – Krumelur

+0

@Krumelur Si je sais quel octet porte quelle information, comment puis-je les séparer, et les organiser dans la matrice? – plukic

+0

Eh bien, toute réponse à cette question dépendrait de savoir cela. Comment les données sont-elles sérialisées? Binaire brut? JSON? Protobuf? XML? – Krumelur

Répondre

1

Vous pouvez décompresser un flux d'octets dans une structure de données Python avec la bibliothèque struct. Vous devrez représenter le flux entrant en utilisant les caractères de format correspondant aux types de données C dans les données. Par exemple, si vous saviez que votre flux d'entrée était une série de 5 ints non signés représentée comme 4 octets, vous pouvez utiliser

struct.unpack('hhhhh', p1[0]) 

(la documentation recvfrom dit qu'il retourne un tuple de (string, adresse), où chaîne est les données reçues).

Cela retournerait un tuple de 5 nombres entiers. D'après ce que je comprends, une liste de tuples est une entrée valide pour numpy.fft, mais bien sûr, vous pouvez pré-traiter les tuples comme vous le souhaitez avant de l'alimenter en numpy.