Sunday 26 November 2017

Umzug Durchschnitt Gnuradio


Es gibt viele Filterblöcke und Kernel in GNU Radio Filterblöcke sind Standard-GNU-Funkblöcke, die in einen Flussgraph passen. Filterkörner sind die Eingeweide der Filteroperationen, die C-Klassen sind, die in anderen Blöcken nützlich sind. Das Filtermodul kommt auch mit Eine Reihe von Filter-Design-Tools. FIR-Filter sehen firfilter h-Filter, die endliche Impulsantwort FIR-Filterung im Zeitbereich berechnen. FFT-Filter sehen fftfilter h Filter, die FIR-Filterung im Frequenzbereich, dh schnelle Faltung zu berechnen. FIR-Filter mit internen Puffer siehe firfilterwithbuffer H-Filter, die eine zeitliche FIR-Filterung durchführen, aber einen internen Puffer beibehalten, so dass die Eingangsvektoren nicht betroffen oder verwendet werden. Dies ist nicht so effizient wie die normalen FIR-Filter, kann aber unter bestimmten Bedingungen notwendig sein. IIR-Filter sehen iirfilter h Filter, die unendlich berechnen Impulsantwort IIR-Filterung. Einzelpolige IIR-Filter sehen Singlepoleiir ha Spezialfall eines IIR-Filters mit einem einzigen Pol, der auch als gleitender Durchschnittsfilter bekannt ist. PFB beliebiger Resampler siehe pfbarbresampler h führt beliebige Resampling durch, dh unter Verwendung einer beliebigen reellen Zahl mit dem Polyphasen-Filterbank-Verfahren Siehe auch Der PFB Arbitrary Resampler Kernel. Polyphase Filterbank siehe polyphasefilterbank ha Satz von Basisklassen mit Standardfunktionen für den Aufbau vieler polyphase filterbank blocks. Design Tools. To helfen, Filter zu bauen, GNU Radio enthält eine Reihe von Design-Tools Diese Tools erstellen Standard-Filter wie niedrig Pass, Hochpass, Bandpass, etc. Es gibt zwei Hauptaromen der Filterentwurfswerkzeuge. Gefaltete Filter sehen Firdes h Filter, die als sinc-Funktionen und eine Fensterfunktion definiert werden. Equiripple Filter sehen Filter, die durch den Parks-McClellen-Algorithmus gegeben werden, der ein Satz gegeben wird Der Bedingungen. Die GNU-Radio-Filterbibliothek exportiert auch den Parks-McClellen-Algorithmus sowohl in C als auch in Python als gr-Filter pmremez. Der Firdes-h-Filter enthält Funktionen zum Entwerfen der folgenden Filtertypen siehe gr Filter firdes. gr Filter firdes lowpass definiert eine niedrige Pass-Filter auf der Grundlage einer Passband Bandbreite und Übergang Bandbreite. gr Filter firdes lowpass2 gleich wie die Tiefpass-Filter mit addierten Argument, um die Out-of-Band-Dämpfung in dB. gr Filter firdes Highpass definiert ein Hochpass-Filter auf der Grundlage eines Passes Band Bandbreite und Übergang Bandbreite. gr Filter Firdes Highpass2 gleich wie die Hochpass-Filter mit hinzugefügten Argument, um die Out-of-Band-Dämpfung in dB. gr Filter firdes Bandpass definiert ein Bandpass-Filter auf der Grundlage der Pass Band Start-und Stop-Frequenzen und Übergangsbandbreite. gr Filter firdes bandpass2 Gleich wie der Bandpassfilter mit hinzugefügtem Argument zur Einstellung der Out-of-Band-Dämpfung in dB. gr Filter firdes complexbandpass definiert einen komplexen Bandpassfilter auf der Grundlage der Passband Start - und Stopfrequenzen und Übergangsbandbreite Gibt komplexe Taps für einseitiges Spektrum zurück. gr Filter firdes complexbandpass2 wie das komplexe Bandpassfilter mit addiertem Argument, um die Out-of-Band-Dämpfung in dB. gr-Filter-Firdes-Bandreject einzustellen, definiert ein Band-Ablehnungsfilter auf Basis einer Stopbandbandbreite Und Übergang Bandbreite. gr Filter firdes Bandreject2 gleich wie die Band ablehnen Filter mit hinzugefügten Argument, um die Out-of-Band-Dämpfung in dB. gr Filter firdes Hilbert schafft eine Hilbert-Transformation filter. gr Filter firdes rootraisedcosine schafft eine Wurzel erhöht Cosinus RRC Puls Formen filter. gr filter firdes guassian schafft eine Gaußsche Pulsformung filter. gr filter firdes window Gibt die Fensterfunktion für das angegebene Fenster bei der angegebenen Anzahl von Taps zurück. Enthält einen Satz von Python-only-Funktionen, die Equalipel-Filter mit dem Parks - McClellen algorithm. lowpass definiert einen Tiefpassfilter, der sich am Ende des Passbandes, dem Start des Stoppbandes, der Passbandwelligkeit und der Stoppbanddämpfung befindet. Bandpass definiert einen Bandpassfilter am Ende des ersten Stoppbandes , Der Beginn des Passbandes, das Ende des Passbandes, der Start des zweiten Stopbandes, die Passbandwelligkeit und der Stopband Dämpfungsplexbandpass definiert ein Bandpassfilter am Ende des ersten Stoppbandes, der Anfang von Das Passband, das Ende des Passbandes, der Start des zweiten Stoppbandes, die Passbandwelligkeit und die Stoppbanddämpfung Gibt komplexe Abgriffe für einseitiges Spektrum zurück. Bandreject definiert ein Bandsperrfilter am Ende des ersten Pass des Bandes, der Start des Stoppbandes, das Ende des Stoppbandes, der Start des zweiten Passbandes, die Passbandwelligkeit und die Stoppbanddämpfung Im Gegensatz zum Firdes h Bandreject Filter muss dieser Filter nicht symmetrisch sein. highpass definiert einen Hochpassfilter, der sich am Ende des Stoppbandes befindet, den Start des Passbandes, die Passbandwelligkeit und die Stoppbanddämpfung. Filter Design GUI Tool. GNU Radio hat ein Filterdesign GUI Tool namens grfilterdesign This Tool ermöglicht es uns, Filter mit den Filter-Design-Methoden oben zu bauen und schauen Sie sich die Ergebnisse sofort Die Häufigkeit und Zeitbereich zusammen mit anderen Aspekten des Filters wie das Phasenprofil, Gruppenverzögerung, die Filter tippt als Liste, Impulsantwort und Schritt Antwort Auch angezeigt ist ein Pole-Null-Plot. Das Filter-Design-Tool ist nützlich, um sofortige Rückmeldung über die Form, Verhalten und Komplexität des Filters aus den Design-Parameter Das Tool enthält auch eine Sicherung Fähigkeit, die Taps und Parameter in einem speichern Einfaches kommagetrenntes CSV-Format. Darüber hinaus kann das Filter-Design-Programm aufgerufen und für die Interaktion innerhalb eines Python-Programms verwendet werden. Es gibt ein paar Möglichkeiten, mit denen wir mit dem Tool programmgesteuert interagieren können. Das Tool kann einfach von Python gestartet werden Wenn es geschlossen ist, gibt es ein Objekt zurück, das mit den Filterparametern gefüllt ist, und tippt ein Beispiel hierfür findet sich in. print Filter Count. print Filter type. print Filter params. print Filterkoeffizienten. Eine andere Möglichkeit, das Filterdesign-Tool zu verwenden, ist zu geben Es ist eine Callback-Funktion, die aufgerufen wird, wann immer die Design-Taste in der GUI gedrückt wird. Der folgende Code kommt aus dem Beispiel Immer wenn Design gedrückt wird, wird die Funktion printparams mit den Filterparametern aufgerufen und tippt innerhalb des Filtobj object. print Filter Count. print Filter type. print Filter params. print Filter Koeffizienten. In meinen letzten Versuchen, die Rauschzahl eines rtl-sdr-Dongles zu messen, habe ich festgestellt, dass sich die Ergebnisse der zweimaligen Leistungsmethode und der Y-Faktor-Methode deutlich unterscheiden. In einem Versuch Um den Grund für diesen Unterschied herauszufinden, habe ich einige weitere Messungen mit verschiedenen Arten von Signalen durchgeführt Ich habe herausgefunden, dass der Leistungsdetektor, den ich in GNU Radio implementiert habe, sich seltsam verhält. Es scheint, dass die angezeigte Signalleistung von dem Signalwellenfaktor abhängt, was sollte Nicht der Fall sein. Update Wie mein Follow-up-Post erklärt, habe ich ein falsches Setup auf dem Spektrum-Analysator und dem Signalgenerator verwendet. Zuerst möchte ich klären, dass das, was ich hier mache, die angegebene Leistung vergleicht In relativen Einheiten für zwei Signale identischer Leistung Ich versuche nicht, die absolute Kraft in Milliwatt zu bestimmen Wie die GNU Radio FAQ genau erklärt, ist diese mit typischen SDR-Geräten knifflig. Das Setup für diese Experimente ist ähnlich wie ich in meinem beschrieben habe Posten über Rauschzahl I m mit einem Ezcap DVB-T Dongle auf 700 5 MHz abgestimmt I m ​​Messung der Leistung in einem 200 kHz Band, das um -500 kHz von der Mittenfrequenz versetzt ist Soweit ich aus der FFT sehen kann, dies Band ist frei von Sporen und anderen Artefakten des Empfängers selbst. Die Signalleistung wird gemessen, indem man das Signal mit einem komplexen Konjugat von sich selbst multipliziert und dann einen gleitenden Durchschnitt von 50000 Samples nimmt. Mit einem Rohde Schwarz SMBV-Vektorsignalgenerator, der in der Lage ist, Wodurch eine beliebige Wellenform mit einer genauen Gesamtsignalleistung erzeugt wird. Als Steuerung habe ich auch einen FSV-Spektrumanalysator eingerichtet, um die Gesamtsignalleistung im gleichen 200 kHz Band wie das rtl-sdr-Setup zu messen. Zum Beispiel zeigt das ein Spektrumanalysator Für eine unmodulierte Sinuswelle mit -95 dBm-Pegel, der auf den Generator eingestellt ist. Und das ist es, was es für ein 100 kHz Band von Gaußschen Rauschen zeigt, wieder mit -95 dBm Pegel. Die gemessene Leistung im 200 kHz Kanal in beiden Fällen stimmt gut überein Mit der Leistungseinstellung auf dem Generator Unterschied kommt wohl von Verlusten im Kabel Ich habe eine 60 cm langsame LMR-195 Koax, die mit dem USRP, Steckverbindern, Fehler bei der Kalibrierung beider Instrumente und der Tatsache, dass die FSV fügt hinzu, kam Rauschen des Signals Das Wichtigste ist jedoch, dass die Leistungsauslesung nur für 0 19 dB beim Einschalten der Modulation ändert. Ich denke, das liegt gut im akzeptablen Messfehlerbereich. Wiederholen Sie die gleichen zwei Messungen mit dem rtl-sdr Dongle und der GNU Radio Power Detector. Hinweis, dass jetzt das modulierte Signal zeigt viel höhere Leistung als die unmodulierte Ein Unterschied ist 2 53 dB, die nicht auf zufällige Fehler zugeschrieben werden kann. In der Tat ist dieser Effekt wiederholbar und nicht spezifisch für die rtl - sdr-Dongle Ich habe die gleichen Messungen mit einem USRP N200-Gerät mit einer SBX-Tochterplatine wiederholt, ich habe auch eine Reihe von verschiedenen Signalen verwendet, vom bandbegrenzten Gaußschen Rauschen, mehreren CW-Signalen zu einem amplitudenmodulierten Träger. Die Ergebnisse sind in der Tabelle unten Um die Dinge klarer zu machen, zeige ich die angegebene Leistung in Bezug auf die CW I ve verwendet -95 dBm mittlere Leistung für rtl-sdr und -100 dBm für USRP, um das Signal-Rausch-Verhältnis ungefähr das gleiche auf beiden Geräten zu halten. Wie Sie sehen können, zeigen beide Geräte einen Offset für Signale, die einen signifikanten Unterschied zwischen Peak und durchschnittlichen Potenzen haben. Die Offsets sind auch sehr ähnlich zwischen den Geräten, was darauf hindeutet, dass dieser Effekt nicht durch das Gerät selbst verursacht wird. Eine Erklärung ist fällig Zum physikalischen Empfängerentwurf kann ich mir die Ergebnisse in einer niedrigeren Verstärkung für Signale mit einem hohen Peak-to-mean Leistungsverhältnis vorstellen So genau das Gegenteil von dem, was ich gesehen habe. Es scheint nicht durch irgendeine intelligente Logik in der Tuner-Anpassungsverstärkung verursacht zu werden Für verschiedene Signale Der Unterschied in der Verstärkung scheint bis zu sehr niedrigen Signal-Potenzen zu bleiben Ich denke, es ist unwahrscheinlich, dass eine solche Optimierung würde bis zu sehr niedrigen Signal-to-Rausch-Ebenen funktionieren Dies schließt auch jede Empfänger Nicht-Linearität als Ursache so weit Wie ich es sagen kann. Wenn ich einen analogen Leistungsdetektor verwenden würde, wäre diese Art von Effekt typisch für einen Detektor, der die Signalleistung nicht direkt wie einen Diodendetektor mißt, der anstelle von quadratisch ein exponentielles Merkmal hat Macht numerisch und Sie können eine genauere quadratische Funktion als x 2.I ve getestet ein paar Theorien über numerische Fehler In der Tat unterscheiden sich die Ergebnisse etwas zwischen dem gleitenden Durchschnitt oder die dezimierende Tiefpass-Filter Sie unterscheiden sich auch zwischen konjugiert und Multiplikation von Blöcken oder dem RMS-Block Allerdings sind die Unterschiede unbedeutend, soweit ich sehen kann und die Erläuterungen nicht erläutern, ich habe die oben gezeigte Flußdiagramm-Einstellung gewählt, weil sie Figuren hervorbringt, die einer identischen Berechnung am nächsten sind, die auch bei NumPy Numerical-Fehlern durchgeführt wird Don t erklären, warum die gleiche Flow-Grafik produziert gültige Ergebnisse für einen Empfänger mit Signal-und Rauschquelle blockiert simuliert. So weit bin ich aus Ideen, was könnte dies verursachen. Posted von Toma Kategorien Analog. Fügen Sie einen neuen Kommentar. Moving Average Block. Hallo Pedro, der Block tut, was man von gleitendem Durchschnitt erwarten würde x die Eingabe, y die Ausgabe Samples, n die Länge des gleitenden Durchschnittes, dh deine zweite Option. Dies ist eine sehr gültige Frage, die ich noch immer darauf hinweisen möchte Dass GNU Radio eignet sich wirklich zum Experimentieren Ein einfaches drei Block Flow Graph hätte dieses Geheimnis für sich selbst gelöst. Best Grüße, Marcus. On 07 01 2016 19 23, Pedro Gabriel Adami schrieb. Die Dokumentation der Moving Average Block ließ mich verwirren Über seine Funktionalität Es sagt Ausgabe ist die bewegliche Summe der letzten N Samples Wenn ich eine Summe von 100 Samples benötige, summiert dieser Block die 100 Samples, die ich brauche und danach bekommst es noch andere Samples. Beispiel 1 2 3 100 und 101 102 200 Oder es wird dies tun 1 2 100 und 2 3 101 und 3 4 102.Ich weiß, es scheint ein wenig verwirrt, aber ich habe nicht einen besseren Weg, um dies zu erklären, sorry. Thanks im Voraus. Whoops, nur bemerkt Ich antworte nicht auf alle, wenn ich so antwortete, dass meine Nachricht und Pedros Antwort nicht an die Mailingliste weitergeleitet wurden. Le jeu 7 janv 2016 20 28, Pedro Gabriel Adami versteckte E-Mail ein crit. Thank Sie so sehr Ich mache einige Tests und Ich habe erkannt, dass die Ergebnisse ein wenig seltsam sind. Das ist der Grund, warum ich gefragt habe. Lass mich dich noch einmal fragen, kennst du einen Block, der in der Lage ist, N Samples zu behalten, also kann ich sie benutzen und danach behält er den nächsten N Samples Wie eine Variable, wo ich die Informationen für eine kurze Zeitspanne speichern kann, aber mein Gnuradio hat keine Variable sink. Thanks in advance. Em 07 01 2016 17 18, Timothe COCAULT versteckte E-Mail escreveu. Wenn Sie nicht sicher sind, Die beste Lösung ist oft, um den Code zu betrachten. Wenn Sie sich die Arbeitsfunktion in Sie sehen, dass der Block zuerst summiert die Geschichte der Länge 100 in Ihrem Fall. Für jede zusätzliche Eingabe Elemente, fügt es das neue Element und subtrahiert die n -100 Element, und gibt die aktuelle Summe. So wird es zunächst 1 100 berechnen, dann 2 101 und so weiter. Zusätzlich zu meiner vorherigen Antwort, ich bin ein Bild, das die Formel zeigt, ich versuche, in Gnuradio mit Blöcken zu bauen Aber anstelle von n 0 und N-1 brauche ich n 1 und 100 100 Samples Das zweite Bild zeigt, wie ich in Gnuradio versucht habe, aber der gleitende durchschnittliche Block bekommt nicht 100 Samples, wie ich es brauche Vorherige Antworten. Timothe sagte mir, um Stream zu Vektor zu verwenden, aber wenn ich sie packe, werden jede 100 Samples eine einzige Information, was ich brauche, ist eher wie ein Controller, der mir 100 Samples zu einem Zeitpunkt gibt. Bitte, ich schätze, wenn Du könntest mir ein paar Tipps geben. Danke im Voraus.2016-01-08 14 47 GMT-02 00 Timothe COCAULT versteckte E-Mail. Whoops, nur bemerkt, ich habe nicht auf alle antworten, als ich so antwortete, dass meine Nachricht und Pedros Antwort nicht weitergeleitet wurden Auf die Mailing-Liste. Le jeu 7 janv 2016 20 28, Pedro Gabriel Adami versteckte E-Mail ein crit. Thank Sie so sehr Ich mache einige Tests und ich habe festgestellt, dass die Ergebnisse sind ein wenig seltsam Das ist, warum ich fragte. Let mich fragen Sie eine weitere Sache kennen Sie einen Block, der in der Lage ist, N Samples zu behalten, also kann ich sie benutzen und danach behält er die nächsten N Samples Wie eine Variable, wo ich die Informationen für eine kurze Zeitspanne speichern kann, aber meine Gnuradio hat keine Variable sink. Thanks im Voraus. Em 07 01 2016 17 18, Timothe COCAULT versteckte E-Mail escreveu. Wenn Sie nicht sicher sind, ist die beste Lösung oft, um den Code zu betrachten. Wenn Sie sich die Arbeitsfunktion in Sie sehen, dass der Block zuerst die Geschichte der Länge 100 in Ihrem Fall summt. Für jede weitere Eingabeelemente fügt er das neue Element hinzu und subtrahiert das n-100 Element und gibt die aktuelle Summe aus. So wird es zuerst 1 100 berechnen, dann 2 101 und so on. is nichts als der gleitende Durchschnitt über die quadratische Größe Traurig, Ihre Formel doesn t spezifizieren, was T bedeutet, ist T verwendet als eine einzige Summe über N Proben quadrierte Größen, oder ist es etwas läuft, dh Sie erhalten so viele Ts Wie Sie Samples betrachten. Ich nehme nur an, dass Sie wirklich nach einem gleitenden Durchschnitt suchen, in welchem ​​Fall Ihr Flussdiagramm korrekt ist Timothe hat mir gesagt, dass ich Stream auf Vektor verwende, aber wenn ich sie packe, werden jede 100 Samples eine einzige Information, rechts Was ich brauche, ist eher wie ein Controller, der mir 100 Samples auf einmal gibt. Wirklich, ich bin mir nicht sicher, woher die Formel kommt, oder was du meinst, oder was du meinst, was du brauchst Vielleicht könntest du einfach aufschreiben , Explizit, was jede Ausgabe Probe sollte, weshalb ich schrieb, anstatt. Best Grüße, Marcus. On 12 01 2016 17 27, schrieb Pedro Gabriel Adami. Zusätzlich zu meiner vorherigen Antwort, ich bin ein Bild, das die Formel zeigt Ich versuche, in gnuradio mit Blöcken zu bauen Aber anstelle von n 0 und N-1 brauche ich n 1 und 100 100 Samples Das zweite Bild zeigt, wie ich in Gnuradio versucht habe, aber der gleitende durchschnittliche Block bekommt nicht 100 Samples Ich brauche, wie wir in den vorherigen Antworten sehen konnten. Timothe sagte mir, um Stream auf Vektor zu verwenden, aber wenn ich sie packe, werden jede 100 Samples eine einzige Information, was ich brauche, ist eher wie ein Controller, der mir 100 Samples gibt Zu einer Zeit. Bitte, ich schätze, wenn Sie mir einige Tipps geben könnte. Danke im Voraus.2016-01-08 14 47 GMT-02 00 Timothe COCAULT versteckte E-Mail. Whoops, nur bemerkt Ich didn t Antwort auf alle, wenn ich so beantwortet Meine Botschaft und Pedro s Antwort wurden nicht an die Mailing-Liste weitergeleitet. Le jeu 7 janv 2016 20 28, Pedro Gabriel Adami versteckte E-Mail ein crit. Thank Sie so sehr Ich mache einige Tests und ich habe erkannt, dass die Ergebnisse sind ein wenig seltsam Das ist der Grund, warum ich gefragt habe. Lass mich dich noch einmal fragen, kennst du einen Block, der in der Lage ist, N Samples zu behalten, also kann ich sie benutzen und danach behält er die nächsten N Samples wie eine Variable, wo ich die Informationen speichern kann Für eine kurze Zeitspanne, aber mein Gnuradio hat keine Variable sink. Thanks in advance. Em 07 01 2016 17 18, Timothe COCAULT versteckte E-Mail escreveu. Wenn Sie nicht sicher sind, ist die beste Lösung oft, um den Code zu betrachten Wenn du die Arbeitsfunktion betrachtest, siehst du, dass der Block zuerst den Verlauf der Länge 100 in deinem Fall summiert. Für jede weitere Eingabeposition fügt er das neue Element hinzu und subtrahiert das Element n-100 und gibt die aktuelle Summe aus. So wird es zunächst 1 100, dann 2 101 und so weiter berechnen.

No comments:

Post a Comment