 Naja, ich kann die, oh, meine Güte, das war unvermittelt. Ja, läuft aber, würde ich sagen. Naja, also ich würde sagen, ihr kennt ja das ganze Spiel. Wir machen jetzt einen neuen Vortrag. Nach dem Vortrag wird es eine QR-Session geben. Also wunderbar. Das heißt, wenn ihr Fragen habt, komme ich dann mit dem Zuschau-Mikrofon hier, diesem, zu euch rüber und werde euch das dann geben, um damit halt eure Frage auch auf dem Stream und auf der Aufzeichnung eben auch zu hören ist. Ja, hallo und herzlich Willkommen zu einem weiteren Vortrag auf der GPN 18. Heute geht es jetzt um Channelizing-Methoden in GNU Radio. Und dazu erzählt uns etwas heute Geron. Ein großen Applaus erst mal. Danke. Genau, und ohne Umschweife gebe ich jetzt einfach mal weiter und wünsche euch allen viel Spaß. Ja, hi, ich bin Geron. Ich hoffe, dass mit dem Mikrofon passt jetzt, nicht an der Ausstellungsgrenze. Ich erzähle heute ein bisschen zu Kanalisierung mit GNU Radio, was GNU Radio da out of the box mitbringt. Ich sehe schon, hier sind wahrscheinlich, gerade in Karlsruhe, ein Gecore-Developer GNU Radio. Den brauche ich da wirklich gar nichts zu erzählen. Aber ich will auch ein, von mir geschriebenes Out of Dream-Module zum Frequency Domain-Channelizer vor, noch relativ frisch, hat noch nicht mal ein Git-Tag bekommen, habe ich noch nicht spendiert, aber ich denke, er ist schon relativ leistungsfähig. Gut, ich fange erst mal mit ein paar Basics an, da werden wahrscheinlich alle jetzt gelangweilt, Weckschnarchen und danach starten wir dann ein bisschen weiter durch. In so einem nachrichttechnischen System, oder kurz zur Zwischenfrage, are there any non-german speakers in the room? Super, dann bleibe ich nur nicht bei Deutsch. Das Grundproblem von dem nachrichttechnischen System, wenn A und B etwas senden und C noch etwas empfangen will, ist, dass sich beim User C, der empfängt eben die Summe aller Signale und damit dieser User C noch etwas davon tatsächlich auch separieren kann, müssen diese eben interferenzfrei gesendet werden. Das kann jetzt folgendermaßen aussehen, ich hoffe, das kann man noch erkennen. Wir haben hier so ein typisches Waterfall-Diagramm, heißt eine Frequenz auf der x-Achse und auf der y-Achse die Zeit. Und hier sieht man eben verschiedene Methoden, wie man den sogenannten Multiple Access, dass verschiedene Nutzer trennbar sind, engagieren kann. Zum Beispiel das Ganze in der Zeit, das wäre hier dieses gebürstete Signal, also beispielsweise ein Protokoll wäre User A sendet, User B sendet und so weiter. Oder wir trennen das Ganze in der Frequenz, hier zum Beispiel Broadcasting Channel, der eben in der Frequenz getrennt ist, zu dem Gebürsteten oder die Kombination. Wir machen das Demand Assigned, also bestimmte Kanäle werden bestimmten Nutzern von einem System zugewiesen und auf dem dürfen sie dann in bestimmten Zeitschlitzen auf bestimmten Frequenzen eben senden. Es gibt natürlich noch wesentlich mehr Multiple Access Methoden, da gehen wir jetzt hier nicht drauf ein, weil das kein Anwendungsgebiet für den von mir vorgestellten Channelizer ist, also CDMA oder Special Multiple Access Methoden, lassen wir komplett daraus. NuRadio bringt grundsätzlich mal, das ist das einfachste, ein FGR oder FFT Filter Channelizer mit, eben das Grundprinzip, wir mischen das Signal auf eine bestimmte Trägerfrequenz, wir setzen einen Tiefpass Filter drauf und decimieren. Das Problem dabei ist, dass wir eben für jeden Kanal brauchen wir eine so eine Filterkombination. Und gerade wenn wir sehr viele Träger haben nebeneinander, müssen wir eben auch sehr viele parallele Filterzüge aufbauen. Für sehr schmalbandige Kanäle, nutz mal besten einen FFT Filter, ich denke, da sehe ich den meisten hier wirklich nichts Neues, deswegen springe ich da ziemlich drüber, einfach weil der FER Filter sonst viel zu viele Tabs hat und das numerisch nicht mehr unter Kontrolle zu kriegen ist. Nichtsdestotrotz, auch bei dem FFT Filter, steigt die numerische Komplexität, weil jeder FFT Filter in NuRadio halt eine eigene FFT macht. Und da geht, ist man halt mit ein paar Channeln nebeneinander schnell überfordert numerisch. In NuRadio lässt sich das Ganze nichtdestotrotz für einzelne kleine Kanäle in Projekten mit dem X-Lating FAA und FFT Filter ziemlich gut realisieren. Ich denke, das ist auch für alle hier nichts Großartig Neues. Da teppen wir hier mal kurz raus. Und ich zeige das mal hier kurz. Das wäre jetzt zum Beispiel mein ursprüngliches Signal. Und ich möchte jetzt den Kanal, sagen wir mal, bei 0,3 und bei 0,45 extra hierhin. Also setze ich mir jeweils ein X-Lating FAA Filter drauf mit entsprechender Frequenz eingestellt, einmal 300 Millie und einmal 450 Millie und danach wieder das Waterfall Diagramm. Und so bekomme ich dann den Channel 0,3 und den Channel 0,45 Problem. Wie gesagt, wenn ich das für alle mache, ist der Workload einfach ziemlich hoch. Genau. So weit denke ich für alle überhaupt kein Problem. So, dann gibt es den Polyphase Channeliser. Der ist auch Out of the Box mit dabei. Der teilt das Signal in gleichmäßige Teile auf im Grunde. Also, da gehe ich auch nur kurz drüber. Der spielt da wieder kaum eine Rolle für die Anwendungsfälle. Hier werden praktisch aus dem Signal 4 Signale, also 4 Einzelkanäle extrahiert. Problem beim Polyphase Channeliser ist, dass die Samplerate des ursprünglichen Signals extrem auf die Kanäle passen muss. Und eventuell muss man eben viel umsamplen, was auch wieder ein großer Workload ist. Meine Erfahrung ist, der Polyphase Channeliser funktioniert nicht für mehr als 20 Kanäle. Parallel. Das ist einfach meine Erfahrung. Aber das musst du natürlich jeder selber wissen. Auch den zeigen wir kurz. Hier jetzt mit 3 Kanälen gemacht. Wie gesagt, es muss exakt passen. Das ursprüngliche Signal. Ansonsten bekommt man hier nicht die einzelnen Kanäle raus. Es wird einfach nur... gerne Platz nehmen. Okay. Es wird einfach nur das Signal im Grunde aufgeteilt. Genau, das sind soweit die Bekannten. Kommen wir jetzt zum eigentlichen Inhalt. Der Frequency Domain Channeliser. Die Idee ist jetzt einfach, ich mache mal eine FFT von dem Signal. Nehmen da nur die Samples von jedem Kanal, der mich interessiert. Nehmen da also irgendwie eine Window-Funktion da drauf. Schifte das Ganze, machen FFT-Schifte, sodass die Sample das Ganze nicht mehr von... wir den Träger in der Mitte haben, sondern der Träger auf der Frequenz 0 liegt. Und machen danach die inverse FFT. Zumal als ganz grob Idee. Jetzt wird die Folie etwas voller. Wir gehen da gleich noch mal mit einer Erläuterung drauf ein. Da gibt es ein paar Notwendigkeiten dafür. Also zum Beispiel, die Blocklänge für die FFT sollte eine Potenz von 2 sein für die Effizienz der Fourier-Transformation. Zudem brauchen wir ein Overlap vom Signal, weil wir machen da im Grunde ja eine Window-Funktion, wenn wir auch nur die Samples ausschneiden. Das ist ein Echteckfilter, was wir da drauflegen. Ohne Overlap bekommen wir sonst von jedem Block zum anderen Block Störungen, also Sprünge in der Amplitudensprünge. Das ist einfach Fast Convolution, also schnelle Faltung. Kann jeder nachschlagen, wenn es da Defizite gibt. Die Window-Funktion, mit der wir da multiplizieren, wie gesagt, die Samples einfach ausschneiden, kann natürlich ein Rectangular sein, aber dann baue ich natürlich auch mehr Overlap, was dann auch wieder meine Komplexität erhöht. Die Kanal-Bandbreite von den ausgeschnittenen Samples muss davon hier wieder eine EFFT machen. Das heißt, die sollte auch eine Potenz von 2 sein. Und in der Folge, die sollte der Dezimationsfaktor eben auch eine Potenz von 2 sein. Weil klar, ich kann nicht 7,5 Samples ausschneiden, sondern es muss auch eine Ganzzahl sein, endet durch D, muss eine Ganzzahl sein, heißt D, muss auch eine Potenz von 2 sein. Genau. Und in der Folge, weil ich ja später den Overlap, den ich vorher dazu genommen habe, wieder wegschmeißen will, muss auch das eine Potenz von 2 sein, weil L durch D auch wieder ganz zahlig sein muss. Wie gesagt, wir gehen jetzt nochmal ein bisschen im Detail drauf ein. Aber das sind mal so die Notwendigkeiten bottom line-up front. Genau. Also, was passiert da? Wir haben ein Eingangssignal. Von dem Eingangssignal teilen wir das Ganze in Blöcke mit einem Overlap am Anfang, eben mit einem Null-Vektor und danach einfach immer von jedem Block das Ende, das ich von jedem vorangehende teile. Im nächsten Schritt machen wir von diesem Overlap in Blöcken die Fourier-Transformation und bekommen dann für jeden Block K ein Vektor HK raus. Ich habe jetzt hier das Ganze mal einfach als Amplitule dargestellt, der Vektor, das sind einfach komplexe Samples hintereinander. Was wir jetzt machen wollen, ist eben diesen einen Channel rausziehen. Heißt, wir nehmen einfach vom irgendeinem Channel bis zur Channel Size, nehmen wir die Samples und multiplizieren einen Fenster drauf und machen davon wieder die Blockweise IFFT. Und dann bekommen wir quasi diesen Overlap-Teil und dann L durch D Teile, die reduzierten für diesen einen Kanal schmeißen diese Samples hier weg, das war der Overlap vorher, wichtig L durch D Samples sind es immer und dann haben wir unser ursprüngliches, dann haben wir das kanalisierte Signal wieder. Wenn später noch Bedarf besteht, kriege ich gerne noch ein bisschen mehr auf die Mathematik ein. Da ist noch ein kleiner Fallstrick drin mit dem Offset hier. Da kann es zu Phasensprüngen kommen, wenn der nicht korrekt gewählt wird oder man beim Windowing etwas falsch macht. Wie gesagt, ich gehe gerne später mal drauf ein. Für den Moment war es, denke ich, schon relativ viel. Kommen wir jetzt zu dem eigentlichen Modul, das ich vorstelle. Primär, der Kern von diesem Modul ist ein Hire-Block. In dem Hire-Block wird die Blöcke gemacht, dann gibt es ein Overlap Safe von diesen Blöcken, dann kommt eine FFT und dann gibt es drei Teilblöcke, einen konstanten Output der macht quasi nichts anderes als ein FFT, also ein X-Lating-FFT-Filter, nur dass die FFT eben hiermit nur einmal gemacht werden muss. Dadurch kann ich die FFT-Filter parallelisieren. Dann das Gleiche, wie den konstanten Output, aber mit einer Detektion im Spektrum, um zu erkennen, ob der gerade ein Träger aktiv ist, einfach nur über einen Threshold zur vorhergehenden Leistung, die dort vorlag. Und da wird das Ganze eine Zeit lang aufgenommen. Und dann erkannt wird das ein Ende vom Träger, also eben über Message Passing oder in den Fall weiter geschickt. Und zuletzt der Detektion-Teil hier gebe ich nicht einen Fixing Carrier an, sondern ich gebe einen Range an, sagen wir mal von 0,1 bis 0,3 und in dieser Range, in diesem Segment werden dann Träger selbstständig gesucht. Selbstständig suchen heißt, ich erkenne auch wieder die Flanken von den Trägern, aber ordnet es eben dann, also aktiviere da, ich sage hier ist ein Kanal und erkenne dann in allen weiteren Blöcken, ob dieser Kanal noch aktiv ist oder ob es über Schneidungen gibt etc. Das habe ich viel erzählt, so sieht das Ganze dann aus. Hier drüben habe ich den Power Activation, da sieht man, er erkennt jeden einzelnen Burst, schreibt den raus und schickt den dann weiter. Den Thru Boot habe ich jetzt nicht markiert, aber das wäre dann quasi einfach so ein typischer Fall, um einfach die Samples rauszuschreiben und in dem Segment 0,1, weiß ich nicht mehr, 2 oder so, bis 0,8, weiß ich nicht mehr, ich glaube 3 da habe ich eben den Detection Teil aufgeschaltet und hier werden eben die ganzen Träger erkannt. Der hier wird jetzt in dem Fall nicht erkannt weil er einfach wahrscheinlich außerhalb der Range war die ich da definiert habe. Genau. Da ich mir das jetzt so nicht glaubt, wenn ich dann Bild anschmeiße, machen wir das mal. Schon mal vorweg, kommt später nochmal ein Problem, das ich habe ist die Visualisierung davon. Ich habe mich nicht näher mit dem QtGuy Waterfall Block beschäftigt, aber ich glaube, der hat keine api um da irgendwie noch selbst Pixel einzuzeichnen. Weiß ich nicht abschließend, aber glaube ich gut, das ist wenn einer sagt nein, dann ist das jetzt so. Ist wahrscheinlich auch ein Spezialfall. Ich habe das jetzt so gelöst, mein Block der hat einfach einen Loggingflag und damit schreibe ich einfach jedes Mal wenn der Kanal deaktiviert wird schreibe ich die Parameter in den Logfile und jedes Spektrum Block den schreibe ich noch über ein Null Sync, einfach wohin und mache jetzt über ein Python Script werde ich das Ganze einfach offline danach aus. Ist keine schöne Lösung, aber es ist mal was. Denn wie gesagt wenn wir hier den Frequency Domain Channel leiser laufen lassen, hier einfach nur die Filesource mit dem Programm den Throttle um das ganze, um ein Prozessor ein bisschen zu schonen in der Temperatur den Throughput Channel den schmeiß ich einfach weg der hier steckt wie gesagt der ganze Rest drin und wenn es läuft, dann passiert kein Grafik-Element, da sieht man einfach nichts wie gesagt, die Visualisierung ist ein Problem aber er schreibt gerade alles in die Files so, gucken wir uns das mal an wie gesagt, hier das Python Script was mache ich hier ich lade das Signal also das ist das Spektrum sag ihm was so eine Blocklänge ich da eingestellt hatte macht den Waterfall den hole ich mir, also die Image-Starten davon und dann passe ich hier meine Lock-Files so und jetzt mache ich für jeden Channel den es hier so gibt, solange der Channel nicht irgendwie weiß ich nicht gerade nicht passt was nicht passiert, ich kann da noch ein Printment reinmachen damit man sieht, dass da nichts Schlimmes passiert ist und dann zeichne ich einfach ruhig in die Image-Starten hier rein so, genau das wäre jetzt noch der Oberknüller wenn ich das ganze noch so ausgeben würde zergeben danke genau und wie gesagt, hier sind ziemlich sauber alle Kanäle erkannt ich sehe jetzt gerade auch kein größeres Problem hier ist es ein bisschen knapp mit der mit dem mit der mit der feilenden Flanke davon aber das ist eine Parameterfrage können wir gleich noch darauf eingehen so, das ist das soll ich es nochmal anmachen damit man sieht, dass es unterschiedliche Längen sind ich glaube es nicht, oder? steht doch auf GitHub, kann jeder gerne reingucken und selber ausgrünen, also so ist nicht genau so, ich komme gleich zu den Problemen und zu den To-Do's also, Dokumentation ich habe schon einiges heute noch geschrieben ich habe mir hier mal 3 Stunden Zeit genommen und habe wirklich nur gemacht was macht jeder Parameter bedankbar, wenn sie mal so ein Block in die Hand bekommen wie gesagt, Visualisierung ist ein Problem es wäre halt cool zu sehen was wird da gerade gemacht im Livebetrieb muss ich mir noch Gedanken darüber machen wie gesagt, habe ich noch nichts habe ich noch keine vernünftige Idee, wie man es machen könnte ich hatte mal diese Blöcke, hatte ich mal einzeln da habe ich das so gemacht dass ich eine Vector sink, also ich habe das Spektrum also die Power Spectral Density habe ich als einen Vector ausgegeben und als anderen Vector war quasi einfach nur eine Markierung, wo sind Channel dann habe ich die übereinander gelegt schön ist das aber nicht wie gesagt, diese Darstellung mit den 4 Ecken von wo bis wo, wie lange ist halt schöner, als einfach nur ein Waterfall Diagramm, als in der Frequency also als an der Vector sink genau ein weiteres Problem sind nochmal hierhin gehen was ich ja hier mache, trotz des Overlaps ist, dass ich hier ein rectangular Window auf mein Zeit-Signal nehme und dann die FFT davon mache heißt, hier in der Frequenz falte ich einen SI Impulse drüber und das macht mir diese ziemlich hässlichen Ausläufer des Signals hier das ist einfach nur mein Window das ich halt draufleg in der Zeit eine Möglichkeit ist, möglicherweise zu lösen wäre nochmal aufs Zeit-Signal, hier beim Overlap gehen, dass ich den Overlap aufteile sagen wir mal, wir nehmen jetzt hier die Hälfte Overlap dann mache ich so einen Block an den Anfang und ich mache einen Block an den Ende mach da eine Rising Edge drüber quasi, also ein Handwindow im Grunde also ein Handwindow hier und ein Handwindow hier und schmeiß dann später dieses Handwindow weg mag dann aber sein, dass der Overlap damit quasi unwirksam wird also es beißt sich alles ein bisschen für den Moment bleibt das ein rectangular Window da müsste ich jetzt viel mit experimentieren genau und diese Slow Edges nenne ich die mal die führen eben zu Fehlerkennungen von Carriern ich habe hier mal nach ein paar Durchläufen so eingefunden da glaubt er halt, da werden Carriern was noch von Zeit zu Zeit passiert wenn man die die Schwellwerterkennung falsch einstellt ist das er zum Beispiel also wenn er ein Rising Edge nicht findet klar, dann fehlt der Carrier schlimmer ist, wenn er den Falling Edge hier nicht findet weil dann geht der Channel plötzlich von hier bis zum Beispiel hier drüben und der bleibt doch eine Zeit lang aktiv, weil wenn ich im nächsten Durchlauf den hier erkenne mache ich es momentan so, dann sage ich der ganze Carrier ist noch aktiv einfach damit auch zum Beispiel analoge Signale wo eben die PowerSpect-Undenzen die über die Zeit sehr stark sich verändert damit die auch vernünftig mitdetektiert werden genau was ist noch ein Problem naja, ich bin kein Entwickler, ich bin ein Nachrichttechniker und so programmiere ich auch also viel Spaghetti-Code aber ich glaube auch, das ist ein Video an vielen Stellen nicht ich habe nichts gesagt, Entschuldigung genau was noch ein Problem ist, klar wir haben jetzt hier nur hohes Signal als das jeder Channel ausgeworfen wird also wie gesagt über Message Passing was jetzt danach mit passiert ist in meinem Channel also völlig scheißegal Entschuldigung tatsächlich war aber das eine Hauptmotivation da lade ich auch gerne jetzt unsere Machine Learning Leute zu ein ich bin mir ziemlich sicher, dass man da hinten dran auf die einzelnen Messages super ein Machine Learning Algorithmus um zu erkennen, ist das jetzt eine FSK, ist das jetzt eine lineare Modulation ist das was Analoges klar, wenn wir auf Symbol-Ebene sind für digitale Verfahren, kann man mit high order Statistics oder Cumulanten sehr leicht die Modulationsart drunterschätzen aber wie gesagt, erst auf Modulations-Ebene Trägerfrequenzerkennung Clockfrequenzerkennung, Phase das ist natürlich dann noch gar nicht mit drin und das ganze blind und automatisiert zu machen ist halt eine Herausforderung wie gesagt, wenn da jemand Gedanken zu hat dann bin ich da dankbar drum und würde auch gerne an dem Projekt damit teilhaben gut das war es von dem Teil ich würde sagen, wir machen jetzt Fragen, weil ich glaube der Matte Teil wenn es jemanden interessiert überhaupt ich kann es mir auch gerne sparen den können wir da anschließen danke gut, dann fangen wir einfach mal an mit dem Fragen hier aus dem Publikum dann bitteschön die Fensterung kannst du direkt im Frequenzbereich machen genau, ja d.h. nach der ersten FFT für die Visualisierung nach der FFT genau, also du hast ja links unten diesen FFT-Block und normalerweise macht man das ja im Zeitbereich vor der FFT mit einem Signaldaten aber du kannst die Fensterung auch ohne weiteres nach der FFT machen über eine reverse convolution eine Faltung quasi mit den Fensterkorfizienten mit denen das Fenster ja normalerweise generiert wird, für den Zeitbereich also für einen Hamming-Fenster hast du ja üblicherweise nur 3 Korfizienten bzw. gespiegelt sind es ja quasi nur 2 und dann kannst du das einfach anwenden und dann sieht es auch entsprechend schöner aus okay, bin ich mir jetzt grad nicht sicher funktioniert also wie gesagt, der müsste ja was falten drüber, ansonsten 3 Korfizienten einfach nur 3 Korfizienten vom Hamming, das heißt das einfachste Fall mittlerer Korfizient 1 links und rechts 0,5 im Frequenzbereich durchfalten und fertig ist es und für ein komplizierteres Fenster sind es halt ein paar Korfizienten mehr das heißt die Faltung wird halt entsprechend aufwendiger aber im Normalfall reicht das den normalen Hamming-Fenster völlig ausreichend also damit es visuell halbwegs aussieht ich hatte mir mal was anderes überlegt und ich habe mir auch noch einen Plan dass ich hier im Grunde 2 FFTs mache ich mache die komplette Block Size und ich mache noch eine mit einer reduzierten Block Size z.B. um 8 reduziert und mache dann Bartlet Window drüber um das zu mitteln bzw. kann da dann auf den Zeitbereich Fenster darauf machen um eben die die Träger besser zu erkennen im Ende des übern Bartletes das war mein erster Ansatz und deswegen mag ich es mal unterhalten wie gesagt stumpf auf die FFT aber wie gesagt ob ich da das Zeitfenster, wenn ich hier vorne Zeitfenster also ob ich das da mehr als 50 hinbekomme weiß ich nicht genau weitere Fragen wenn nicht würde ich vorschlagen machen wir einfach mal den Matte Teil ach nee, wir haben da vorne noch einen Moment mir ist noch aufgefallen dass die erkannte Trägerfrequenz noch von den Nachbarkanälen leicht beeinflusst wird also wenn man da diese Quadrate anschaut das ist hier z.B. auf der rechten Seite leicht verschoben also sie ist ja nicht zentriert genau momentan habe ich hier eine Block Size von 1024, das ist nicht sonderlich viel ich kann gleich nochmal die Parameter zeigen die der Block kriegt unter anderem gebe ich auch einen Mindestkanalabstand an aufgrund des Mindestkanalabstandes reduziere ich nochmal die Samples damit ich einfach nicht so viele Samples die Threshold zählen muss und noch ein bisschen ein Average Effekt reinkriegt und so ein leichtes Verschieben kann auch dadurch passieren, dass ich dann halt wie gesagt die Auflösung nicht mehr 100% ich habe wäre eine Möglichkeit, deswegen könnte es verschoben werden weil hier haben wir es ja auch und da passt das Fenster auch nicht 100% also da passt es ziemlich gut dann müsste es ja dann genaues passieren also meine Vermutung an der Stelle wäre einfach dass hier der durch die künstliche Auflösungsverringerung die ich da eben habe also die ich da implementiert habe kann ich auch rausnehmen über den Parameter dass dadurch das Fenster ein bisschen verschoben wird genau aber lösen indem ich einfach die Mindestkanalbreite ein bisschen breiter mache ich meine ob es jetzt zwei Samples pro Symbol oder drei Samples pro Symbol sind macht keinen Unterschied mehr zu was auch immer es vorher waren 70 Samples pro Symbol und dann liegt in jedem Fall drin wie gesagt Carrierfrequenzie SYNK muss man eh machen aber danke noch weitere Fragen ich hoffe Sie haben nicht einen Core okay super dann machen wir kurz den Mathe Teil wie gesagt wer nicht Mathe Affines der kann auch gerne flüchten aber ich habe überhaupt kein Problem mit erstmal definiere ich ein paar Sachen z.B. Blocklänge das ist eine Power von zwei dann haben wir die Overlaplänge auch als Power von zwei und den Decimation Factor der auch kleiner gleich Alice der ist auch eine Power von zwei genau jetzt definieren wir noch den relativen Inversen Overlap was bedeutet es wenn ich 25% Overlap nehme also ein Viertel dann ist der relative Inversen Overlap das Psi halt vier und dieses Psi dadurch dass es N durch L ist klar der Overlap wäre L durch N der Relative und der Carrierwetter von N durch L Potenz von zwei Potenz von zwei ist auch wieder eine Potenz von zwei und wir haben den Offset in der Frequenzdomäne ich gehe nochmal ein paar Folien zurück ich spring jetzt hier viel durch sorry der Offset ist also die Nummer dieses Samples von N bis die Nummer genau und diene ich jetzt mal kleinen Sigma genau wenn das hier unsere Power Spectral Density ist und ich möchte die wieder nicht sehen von den 16 Samples Block Size möchte ich den Kanal ab dem ersten Samples für das Gesamt acht Samples dann wäre N durch D, acht Samples die gilt es zu extrahieren und der Channel Offset die eins wenn wir das ganze im Zeitbereich implementieren würden dann würden wir da eine Multiplikation mit einer exponential Funktion mit einer komplexen exponential Funktion also einfach den Carrier wählen dann ein Tiefpass und eine Dezimierung wenn wir uns das überlegen was der Frequenzdomain Channel Leiser da macht dann haben wir hier einen Shift von Sigma das hier entspricht der Window Funktion die wir multiplizieren und bei dem Dezimieren ist es halt hier das Wegwerfen aller Samples außen rum genau dieser Shift, ich bleibe jetzt mal kurz in der Zeitdomäne weil es da ein bisschen leichter zu erklären ist dieser Shift von Sigma durch N um Null bis N nach der Dezimation und der Immersion FFT und wenn der Overlap weggefallen ist sieht das ganze so aus dann haben wir eine exponential Funktion von 2Pj Sigma durch N L bis N wie gesagt der Overlap davor ist gelöscht, es geht von L bis N was wir jetzt als Problem haben von Blöcken die hintereinander sind ist dass diese exponential Funktion eben eine ganz zahlige Periode haben muss in dem Block also in dem resultierenden Block heißt vom ersten Sample das ist das älteste Sample muss die Phase gleich sein zu dem quasi Anfangssample des nächsten Blocks und es ist dann halt N so, dann das führt uns dann so this leads to wenn man das ganze einfach nur umstellt zu bla bla bla 1 minus 1 durch Täter und hier vorne steht Sigma Sigma ist eine natürliche Zahl oder die Null heißt die 1 hier fällt schonmal weg und was in den Overlap sind 2Pj Sigma durch Psi also das ist der Offset geteilt durch den Relativen Inversen Overlap jetzt wann ist das hier erfüllt dass die exponential Funktion 2Pj und so weiter gleich 1 ist, naja immer wenn das hier eine ganze Zahl ist das Sigma durch Psi ist glaube ich easy und genau und das wiederum ist nur der Fall wenn Sigma Psi gleich Null ist heißt wenn es ganz zahlig teilt oder Null ist genau das ist schonmal eine ganz interessante Aussage heißt den Offset kann ich nicht beliebig genau positionieren wenn ich das so implementiere, wenn ich quasi als Window Funktion einfach nur irgendwie nicht eine feste Window Funktion nehme das ist kein Problem wenn man große Block Längen hat weil bei großen Block Längen da sind ein paar Samples mehr oder weniger ob ich jetzt 3 Samples nach links oder nach rechts gehe entspricht einem sehr kleinen Frequenz Offset das ist unkritisch für kleine Block Längen ist es wiederum kritisch und das löst man also kann man noch lösen der Face Shift von einem Block zu Block ist immer 2Pj Sigma durch Psi ich will nur Psi durch Sigma sagen egal Sigma durch Psi sind halt nur für Psi verschiedene Werte heißt ich kann das auch im Window bereits, kann ich den Phasen Shift, den es haben wird schon kompensieren nehmen wir ein Beispiel Sigma ist 1 und Psi ist 4 vom ersten Block zum zweiten Block habe ich einen Unterschied von Pihalbe also von jeweils von Block zu Block Pihalbe heißt der zweite Block hat dann Pi und der letzte hat dann 3Piv 1,5P und dann sind wir wieder vorne bei der Phase 0 abhängig von Sigma eben immer genau und das kann ich durch die Window Funktion kompensieren indem ich einfach nochmal ein paar Schritte zurück indem ich hier nicht eine Window Funktion nehme ist eine Lookup Table mit in dem Fall 4 Windows und dann ist das Ganze auch nicht mal ein numerisches Problem fangen dann nicht immer an zu jubeln wenn eine Flasche rum gefallen wird egal, alles klar und dadurch habe ich nicht mal ein numerisches Problem dass es irgendwie ein Performance kritisch wäre weil die Werte sind ja schon da aber es gibt auch nur 4 für jeden einzelnen Kanal ja, das war der erste Ansatz genau, dass ich immer wieder auf einen Modulo vom das Sigma so wähle aber wie gesagt für kurze alles klar die Frage war ob ich nicht einfach das IFFT Fenster entsprechend anpassen kann dass Sigma eben Modulo Psi ja, das kann ich machen wie gesagt, für lange Blocklängen total unkritisch, weil der Frequenzversatz ist minimal aber für kurze Blocklängen ist halt der Frequenzversatz möglicherweise doch relevant oder war das nicht die Frage? machen wir nachher, alles klar klick euch hier nochmal durch, die Hälfte der Zeit habe ich jetzt hier geklickert macht aber nichts das kenne ich auch gut genau genau, das war's dieses, wie gesagt, durch die mehreren Windows die dann einfach in der Phase gedreht sind die Ablitur ist identisch kann ich so eben den Schiff, den es haben wird, einfach anpassen und das mache ich auch eben in den Blöcken die dort implementiert sind genau, und wenn ich nicht jetzt ein 128th Overlap wähle, was auch nicht wirklich realistisch ist denke ich, aber wenn ich nicht ein 128th Overlap wähle, dann kann ich das auch durchaus realistisch als Lookup-Table implementieren und muss nicht ständig bei jedem Block immer neu die Phase berechnen genau, und das dürfte jetzt wirklich gewesen sein danke, vielen Dank so, habt ihr jetzt weitere Fragen? na ja gut, also wie gesagt war ein wirklich sehr umfassender tiefgehender Vortrag ich bin mir auch sehr sicher, dass die auch in kleinerer Runde hier mit Sicherheit führen noch einige Diskussionen oder so zur Verfügung steht ich habe jetzt Urlaub wo geht's hin? naja, ist gut gerne, klar ich habe vorhin schon die Nachrichtentechniker da draußen gesucht aber irgendwie sehe ich immer nur irgendwelche Marteleuchten oder so was naja, die LED-Error hat angebrochen und die Machine Learning Leute naja gut ja, gibt's mehr Hochfrequenz ich glaube bestimmt irgendwo in weiteren interessanten Vorträgen ja, ich glaube es gibt doch Stellt jemand für das Genu-Radio-Iridium stellt jemand vor also Statelliten-Kommunikation so ein Sattkommen, Handy-Netz bin gespannt, schaue ich mir gerne an eigentlich sollte der hier, glaube ich, da nachkommen aber wird noch mal umgestellt ist möglich, ich habe jetzt ein Schedule nicht vor Augen naja gut dann danke ich euch auf jeden Fall mal für eure Aufmerksamkeit und viel Spaß noch bei allen weiteren Vorträgen und auf der GPN vielen Dank