Hi Mathefreaks Ich arbeite schon länger mit MLS=Maximum Length Sequence, das sind per LFSR=Linear Feedback Shift Register erzeugte Bitsequenzen ähnlich wie denen bei CRCs. Mit diesen MLS moduliere ich Signale eines Senders (zB. Audio) und korreliere auf Empfängerseite per FHT=Fast Hadamard Transformtion den Empfangsdatenstrom, quasi wie ein Matched Filter. Mich interessiert dabei nur das Vorhandensein dieser Signale im empfangenen Signal. Mit der FHT reduziert sich der Aufwand der Korrelation von O(n^2) auf O(n*ln(n)) also wie bei einer FFT=Fast Fourier Transformation. Wie man eine einzelne MLS per FHT korreliert ist mir klar. Jetzt gibt es sogenannte JPL-Codes. Das sind binäre Codes die aus zwei oder mehreren MLS per modulo-2 Operation verknüpft werden. Bsp: eine MLS mit 31Bit=2^5-1 und eine zweite MLS mit 127Bit=2^7-1 werden synchron per LFSR erzeugt und deren Outputbits per XOR Operation verknüpft. Es entsteht eine PRNG Sequenz die 31x127Bit lang ist und die ähnliche Korrelationseigenschaften aufweisen wie normale MLS. Auf alle Fälle sind beide MLS orthogonal zueinander. Mein Problem ist nun die Matheamtik der 1D-FHT (eine FHT für eine MLS) in eine 2D-FHT (eine FHT für 2 MLS wie bei JPL-Codes) zu überführen. Im Gegensatz zu den "2D-FHTs" die man aus der Bildbearbeitung kennt, zb. digitale Wasserzeichen, meine ich eine reale 2D-FHT. Vereinfachtes Beispiel: Nehmen wir mal an wir hätten folgende zwei Codes: 3Bit "+--" 2Bit "+-" und vernachlässigen dabei deren orthogonale Eigenschaften wie bei MLS vorhanden. Die binäre Sequenz wird bipolar dargestellt durch 0=-1 und 1=+1, also wir betrachten nur das Vorzeichen. Ein JPL Code (abhängig vom Startwert) sähe dann so aus: 012012 +--+-- 010101 +-+-+- modulo-2 Ergebnis (Multiplikation von +1,-1) ++---+ Also 3*2=6Bits, als Tabelle so: +-- 012 +0 +-- -1 -++ in den Zeilen die 3Bit Sequenz und den Spalten die 2Bit Sequenz. Durch Multiplikation mit dem Vorzeichen der Zeilen mit den Spalten, und umgekehrt, erhält man dann wieder die originalen Sequenzen. Die Tabelle lässt sich einfach sequentiell füllen mit zwei modularen Zählern für mod 2 und mod 3 und dem empfangenen Signal: S: ++---+ X: 012012 Y: 010101 in Spalte/Zeile=X/Y=0/0 der Tabelle ein + in Spalte/Zeile=X/Y=1/1 der Tabelle ein + in Spalte/Zeile=X/Y=2/0 der Tabelle ein - in Spalte/Zeile=X/Y=0/1 der Tabelle ein - usw. usw. Ich weiß nun wie ich eine FHT konstruiere für den 3Bit und 2Bit Code für sich alleine, möchte aber nun eine FHT Matrix konstruieren die in einem beide Codes korrelieren kann. An Hand dessen das beide Codes zueinander orthogonal sind, die Codes in sich orthogonal sind denke ich das man das mit der FHT korrelieren kann. Ich muß aber die Matrizen der beiden FHTs in eine mehrdimensionale Matrix überführen, und daran scheitere ich. Hintergrund der Sache ist natürlich die Performance des Systems. Angenommen man benutzt einen JPL Code aus 2 MLS a 127*1023Bits = 129921 Bits. Nimmt man eine normale sequentielle Korrelation dann benötigen wir 129921^2=1.7e10 Operationen. Bestcase wären O(N*Ln(N)) = 1.5e6 Operationen. Mit "zerstückelten" FHTs für beide MLS Codes wären es 896*1023 + 11264*127 = 2347136 statt wie im Bestcase 1529778 Operationen. Ein weiteres Manko dieser "gestückelten" Vorgehensweise ist es das man den Gesamtcode quasi in jweiles 127 und 1023 Akkumulatoren über 127*1023 Bits aufkummuliert und dann erst 2x FHTs durchführt, wie beim Longranging System der amerikanischen Raumsonden Phoebos usw. Man erreicht also nur einen Bruchteil des maximal erreichbaren SNRs bei dieser Vorgehensweise. Würde man dagegen eine mehrdimensionale FHT bauen können mit den oben beschriebenen Komplexitäten dann würde sich das Verfahren im SNR drastisch verbessern lassen. Ich weiß das meine Informationen bischen dürftig sind, meine aber das sich in einer gemeinsammen Diskussion viele Sachen besser entwickeln lassen. Gruß Hagen
Hagen Re schrieb: > Ich arbeite schon länger mit MLS=Maximum Length Sequence, das sind per > LFSR=Linear Feedback Shift Register erzeugte Bitsequenzen ähnlich wie > denen bei CRCs. Sind diese Sequenzen immer gleich und werden quasi als Kennung verwendet, oder werden die Sequenzen verwendet, um Nutzdaten zu spreizen/falten/codieren/wie-auch-immer wie etwa beim CRC?
Das sind schon die Nutzsignale. Es geht nur darum das Vorhandensein dieser Sequenzen im empfangenen Signalgemisch zu verifizieren und eben den Phasenshift (Index des Peakwerts der Korrelation) zu ermitteln. Die exakte Sequenz wird permanet lückenlos wiederholt. Gruß hagen
Richard P. Feynman schrieb: >> We could, of course, use any notation we want; do not laugh at >> notations; invent them, they are powerful. In fact, mathematics >> is, to a large extent, invention of better notations. Die meisten Darstellungen von LFSR bzw. CRC, die sich im Web finden, lesen sich wie Programmieranleitungen: "Schiebe dies dahin und mache XOR dort und teste jenes Bit da drüben". Mathematisches Werkzeug ist bei so einer Algorithmen-zentrierten Sichtweise wohl eher holprig, und statt dem Programmier-Rezept kann man diese Sequenzen auch anders darstellen: Nimm F_2, den Körper mit 2 Elementen, und konstruiere darau einen Körper mit 2^n Elementen, F_2^n:
Die Konstruktion ist analog zu Konstruktion der Komplexen Zahlen aus den Reellen:
F_2^n hat Körpergrad n über F_2 und ist — ebenso wie C — bis auf
Isomorphie eindeutig bestimmt.
Die multiplikative Gruppe des Körpers ist zyklisch: Ist a ein Erzeuger,
dann hat die Folge {a^k}_k also Periode 2^n-1, und durch Projektion von
a^k nach F_2 erhält man eine pseudo-zufällige (Bit)folge. Eine einfache
Projektion wäre zum Beispiel die Spur eines Elements oderDamit ist die MLS dargestellt als
und die Summe zweier MLS als
Vielleicht ist diese Darstellung ja hilfreich, weil sie nur aus recht simplen Operationen besteht und so die Summenfolge einer weitere Analyse zugänglich macht. Für die Länge der Periode der kombinierten Sequenz gilt offenbar
> Wie man eine einzelne MLS per FHT korreliert ist mir klar.
Ist das eine Faltung?
Inwieweit geht da ein, daß MLS Periode 2^n-1 hat?
Was wäre, wenn die Periode 2^n+3 wäre? Oder ist dann das "F" in FHT
hinfällt, analog zum "F" in FFT wenn kein 2^n-Paket vorliegt?
Hi Johann: Johann L. schrieb: > Für die Länge der Periode der kombinierten Sequenz gilt offenbar... Deine Ausführungen sind korrekt. Die JPLCodes haben eine effektive Länge die sich multiplikativ aus den Längen der einzelnen MLS ergibt. Diese Längen der Einzeln-MLS sind per Definition teilerfremd zueinander und maximal-Längen Sequenzen. 1. Frage: Wenn ich zwei solcher MLS so wie bei den JPL Codes modulo-2 verküpfe sind diese Codes dann insich immer noch orthogonal ? Wenn nämlich nicht, dann brauch ich garnicht weiter machen da dies eine Bedingung für den Weg der Korrelation dieser Sequenzen über die FHT ist. >> Wie man eine einzelne MLS per FHT korreliert ist mir klar. > > Ist das eine Faltung? Ja. > Inwieweit geht da ein, daß MLS Periode 2^n-1 hat? Komplett ;) Die FHT expandiert diese 2^n-1 um +1 auf 2^n. Es wird eine Matrix erzeugt, Shifted Version der MLS in den Spalten und Zeilen die (2^n-1)^2 groß ist. Diese Matrix ist in den Spalten und Zeilen immer orthogonal. Dann wird diese Matrix um eine Spalte und Zeile mit +1 expandiert und so eine (2^n)^2 Matrix erzeugt. Nun wird diese Matrix in den Spalten und Zeilen so umsortiert das daraus eine Hadarmard/Walsh konforme Matrix wird. Dann wird diese Matrix faktorisiert so das man zwei Vektoren erechnen kann die die Permutationsverktoren darstellen mit denen man vor und nach der FHT-Butterfly den Bitstrom der MLS umsortiert. Dann wendet man den Butterfly Algorithmus (nur Additionen) an und fertig ist die Korrelation. > Was wäre, wenn die Periode 2^n+3 wäre? Oder ist dann das "F" in FHT > hinfällt, analog zum "F" in FFT wenn kein 2^n-Paket vorliegt? Dieser Fall tritt nicht ein, die MLS sind immer 2^n-1 Bits groß und in der FHT wird diese um +1 Bit expandiert auf 2^n. Das habe ich ja auch schon alles am Laufen, meine sogar das ich ein besseres Verfahren entwickelt habe um die Permutationsvektoren live berechnen zu können als das was ich in der einschlägigen Literatur gefunden habe. Normalerweise wird in der Literatur immer die Faktorisation der Matrix beschrieben und umständlich diese Permutationsvektoren erechnet. Diese Vektoren werden dann einmalig vorausberechnet und im Speicher abgelegt. Mein Verfahren erechnet diese Vektoren direkt zur Laufzeit der FHT und das mit sehr wenigen Operationen. Meine Feststellung ist nämlich das diese Permutationsvektroren aus dem inversen Polynom zu dem benutzen Polynom der MLS direkt berechenbar ist. Dh. man benötigt nur ein LFSR mit inversem Polynom um direkt diese Permutationstabelle zu berechnen. Mein Problem setzt jetzt aber auf all dies auf. Statt die FHT nur für eine MLS durchzuführen möchte ich diesen FHT Algorithmus so umbauen das er auf einer zusammengesetzten Sequenz, eg. JPL-Code, funktioniert. Nehmen wir mal einen JPL Code aus zwei MLS zusammengesetzt an. MLS #1 -> 2^5-1 = 31 Bit MLS #2 -> 2^7-1 = 127 Bit Die Gesamtlänge ergibt sich zu 31*127 Bit. Die bei JPL haben für ihr Longranging System der Deepspace Raumsonden folgenden Weg beschritten: 2 Akkumulatoren-Arrays aus jeweils 31 und 127 Registern. Addiere die sequentiell empfangene Gesamtsequenz jeweils 31x in das 127'er Register und 127x in das 31'er Register, jeweils mit modularen Addresszählern von mod 127 und mod 31. Mache nach 31x127 Takten zwei Korrelationen, jeweils eine für das 31'er und 127'er Register, fertig. Auch das habe ich so schon nachgebaut und es funktioniert. Ich benötige per FHT für das 31'er Register (2^5-1) -> FHT expandiert +1 Bit -> 2^5*5 = 160 Additionen und für das 127'er register 2^7*7=896 Additionen. Für die beiden Akkumulatoren benötigt man 31x127 Additionen. Das ist schon eine ziemlich gute Komplexität der Korrelation für eine solch lange Sequenz. Wenn es nun einen FHT Algorithmus gäbe der beide Korreationen vereinen kann in einer Butterfly dann sollte dieser effizienter sein als die zwei einzelnen FHT. Und exakt danach suche ich. Es gäbe da für mich zwei Möglichkeiten: 1. das JPL Prinzip mit den Akkumulatoren (eg. Integratoren) und als Abschluß statt 2'mal separate FHTs in einer einzigen 2. eine FHT die über die kompletten 31x127 Datenstrom arbeitet und ohne Akkumulatoren auskommt, statt dessen sitzen diese Akkumulatoren ja dann in dieser FHT als Operation. Das Problem mit den Akkumulatoren ist das ich meine das der sich ergebende SNR geringer ist als die komplette Sequenz zu korrelieren. Weil eben pro Eintrag im 31'er Register eben 127 Werte des Signalstromes aufsummiert werden statt per Korrelation kreuzkorreliert. Angenommen unsere Sequenz bestünde nur aus +1 und -1. Nach einem Umlauf von 31x127 Werten der Sequenz stünde dann im 31'er und 127'er Register wieder nur Werte von +1 und -1, logisch. Dh. die Werte in unseren beiden Akkumulatoren-Registern sind durch die Bank weg +1,-1 obwohl wir jeweils 127 oder 31 Samples der Sequenz aufsummiert haben pro Register. Mein Problem ist das ich keinen FHT Algorithmus kenne der solch zusammengesetzte JPL Codes korrelieren kann, noch weiß ich wie ich mathematisch die normale FHT in die höhere Dimension bekommen kann, da versagt mein Wissen. Gruß Hagen PS: sorry, mir fällt es sehr schwer mich mathematisch korrekt auszudrücken ;)
Hagen Re schrieb: Da ich von Signalverarbeitung keinen Plan hab, versuch ich mich erst mal reinzudenken; nicht ganz einfach mit den zig Abkürzungen die da rumwirbeln: Die n Walsh-Funktionen der Ordnung 2^n bilden ein Fundamentalsystem von V = (F_2)^n. Die Hadamard-Trafo bildet ein Element von V auf dessen Koordinaten bezüglich der W-Funktionen ab. Soweit richtig? > 1. Frage: > > Wenn ich zwei solcher MLS so wie bei den JPL Codes modulo-2 verküpfe > sind diese Codes dann insich immer noch orthogonal? Wie ist denn Orthogonalität hier definiert? Die beiden Folgen haben doch unterschiedliche (Perioden)Längen. > Wenn nämlich nicht, dann brauch ich garnicht weiter machen da dies eine > Bedingung für den Weg der Korrelation dieser Sequenzen über die FHT ist. Die H-Trafo ist doch linear, d.h. insbesondere H(a+b) = H(a)+H(b). Dies gilt doch unabhängig davon, wie das Ursprungssignal gebastelt wurde? >> Inwieweit geht da ein, daß MLS Periode 2^n-1 hat? > > Komplett ;) Die FHT expandiert diese 2^n-1 um +1 auf 2^n. Es wird eine > Matrix erzeugt, Shifted Version der MLS in den Spalten und Zeilen die > (2^n-1)^2 groß ist. Diese Matrix ist in den Spalten und Zeilen immer > orthogonal. Dann wird diese Matrix um eine Spalte und Zeile mit +1 > expandiert und so eine (2^n)^2 Matrix erzeugt. Nun wird diese Matrix in > den Spalten und Zeilen so umsortiert das daraus eine Hadarmard/Walsh > konforme Matrix wird. Dann wird diese Matrix faktorisiert so das man > zwei Vektoren erechnen kann die die Permutationsverktoren darstellen mit > denen man vor und nach der FHT-Butterfly den Bitstrom der MLS > umsortiert. Dann wendet man den Butterfly Algorithmus (nur Additionen) > an und fertig ist die Korrelation. Das müsste man aufdröseln in den Teil, der notwendig ist für eine effektive Implementierung, und den "theoretischen" Teil, d.h. was wird wirklich an Voraussetzungen an die zu transformierenden Vektoren gemacht. MSL haben zB bestimmte Voraussetzungen an der Anzahl der 1en und 0en und wie oft 11er etc. vorkommen. Ich sehe an keiner Stelle, wo dies benötigt wird um eine H-Trafo zu machen. Diese Voraussetzung zielt wohl eher in Richtung inwieweit die MLS für signaltechnische Anwendungen taugt, aber nicht, inwieweit die Sequenz mit den Methoden der Signalverarbeitung verwurstet werden kann. >> Was wäre, wenn die Periode 2^n+3 wäre? Oder ist dann das "F" in FHT >> hinfällt, analog zum "F" in FFT wenn kein 2^n-Paket vorliegt? > > Dieser Fall tritt nicht ein, die MLS sind immer 2^n-1 Bits groß und in > der FHT wird diese um +1 Bit expandiert auf 2^n. > > Das habe ich ja auch schon alles am Laufen, meine sogar das ich ein > besseres Verfahren entwickelt habe um die Permutationsvektoren live > berechnen zu können als das was ich in der einschlägigen Literatur > gefunden habe. Normalerweise wird in der Literatur immer die > Faktorisation der Matrix beschrieben und umständlich diese > Permutationsvektoren erechnet. Diese Vektoren werden dann einmalig > vorausberechnet und im Speicher abgelegt. Mein Verfahren erechnet diese > Vektoren direkt zur Laufzeit der FHT und das mit sehr wenigen > Operationen. Meine Feststellung ist nämlich das diese > Permutationsvektroren aus dem inversen Polynom zu dem benutzen Polynom > der MLS direkt berechenbar ist. Was ist denn ein "inverses Polynom". Sowas wie
wenn p das erzeugende Polynom ist? > Dh. man benötigt nur ein LFSR mit inversem Polynom um direkt diese > Permutationstabelle zu berechnen. > Mein Problem setzt jetzt aber auf all dies auf. Statt die FHT nur für > eine MLS durchzuführen möchte ich diesen FHT Algorithmus so umbauen das > er auf einer zusammengesetzten Sequenz, eg. JPL-Code, funktioniert. > Nehmen wir mal einen JPL Code aus zwei MLS zusammengesetzt an. > > MLS #1 -> 2^5-1 = 31 Bit > MLS #2 -> 2^7-1 = 127 Bit > > Die Gesamtlänge ergibt sich zu 31*127 Bit. Die bei JPL haben für ihr > Longranging System der Deepspace Raumsonden folgenden Weg beschritten: > > 2 Akkumulatoren-Arrays aus jeweils 31 und 127 Registern. Addiere die > sequentiell empfangene Gesamtsequenz jeweils 31x in das 127'er Register > und 127x in das 31'er Register, jeweils mit modularen Addresszählern von > mod 127 und mod 31. Mache nach 31x127 Takten zwei Korrelationen, jeweils > eine für das 31'er und 127'er Register, fertig. Das Prinzip ist folgendes: Man hat eine Folge a der Länge La und eine Folge B der Länge Lb, und · bezeichne n-faches Wiederholen einer Folge. Übertragen wird eine Folge der Länge La*Lb, nämlich a·b := La·b + Lb·a Wie bereits oben geschrieben, handelt es sich bei XOR um eine Addition; zumindest kann es so aufgefasst werden wenn man die Darstellung günstig wählt. Weil die H-Trafo linear ist, kann man einfach La mal die H-Trafo von b addieren, also quasi übereinanderlegen. Ziel der Trafo, ist es ja eine Korrelation zu erkennen, und wenn man nach der Korrelation für b sucht, hat man ein fieses Störsignal darauf, nämlich a. Allerdings weiß man, daß a Periode La hat, die Teilerfremd zu Lb ist. Beim Überlagern der La Stücke von b wird das Störsignal genau Lb mal durchlaufen, und zudem fängt es jedesmal an einem anderen Offset an. Insgesamt führt dies dazu, daß a nur einen zeitkonstanten Beitrag liefert und so in der H-Trafo nicht auffällt. War übrig bleibt ist effektiv die die H-Trafo von b. Ditto für a. > Auch das habe ich so schon nachgebaut und es funktioniert. Ich benötige > per FHT für das 31'er Register (2^5-1) -> FHT expandiert +1 Bit -> 2^5*5 > = 160 Additionen und für das 127'er register 2^7*7=896 Additionen. Für > die beiden Akkumulatoren benötigt man 31x127 Additionen. Das ist schon > eine ziemlich gute Komplexität der Korrelation für eine solch lange > Sequenz. Hier versteh ich nicht, warum das funktioniert. Beim Aufblasen auf 2^n werden doch Nullen eingestreut, die zwar der betrachteten Komponente nicht schaden, aber bei der überlagerten Komponente werden doch ziellos, d.h. nicht-periodisch Nullen eingestreut? Oder hab ichn Denkfehler? > Wenn es nun einen FHT Algorithmus gäbe der beide Korreationen vereinen > kann in einer Butterfly dann sollte dieser effizienter sein als die zwei > einzelnen FHT. > > Und exakt danach suche ich. Es gäbe da für mich zwei Möglichkeiten: > > 1. das JPL Prinzip mit den Akkumulatoren (eg. Integratoren) und als > Abschluß statt 2'mal separate FHTs in einer einzigen Aber welche Dimenson sollte die haben? Ich seh hier nicht wie man das sonst aufdröseln kann, da man ja immer das Rauschen der zweiten Komponente eliminieren muss. > 2. eine FHT die über die kompletten 31x127 Datenstrom arbeitet und ohne > Akkumulatoren auskommt, statt dessen sitzen diese Akkumulatoren ja dann > in dieser FHT als Operation. Was immer "Akkumulatoren" sind. Wahrscheinlich implementatorische NitPicks, deren Details eher zu Aus- und Abschweifung führen-... > Das Problem mit den Akkumulatoren ist das ich meine das der sich > ergebende SNR geringer ist als die komplette Sequenz zu korrelieren. > Weil eben pro Eintrag im 31'er Register eben 127 Werte des Signalstromes > aufsummiert werden statt per Korrelation kreuzkorreliert. Was ist SNR? Wie gesagt: Nach obiger Darstellung erscheint die eine Folge bei der Analyse der anderen quasi als Rauschen.
Johann L. schrieb: > Die n Walsh-Funktionen der Ordnung 2^n bilden ein Fundamentalsystem von > V = (F_2)^n. Die Hadamard-Trafo bildet ein Element von V auf dessen > Koordinaten bezüglich der W-Funktionen ab. Soweit richtig? Korrekt. > Was ist denn ein "inverses Polynom" ? Das Polynom das die gleiche Sequenz erzeugt nur rückwärts. > Das Prinzip ist folgendes: > > Man hat eine Folge a der Länge La und eine Folge B der Länge Lb, > und · bezeichne n-faches Wiederholen einer Folge. > > Übertragen wird eine Folge der Länge La*Lb, nämlich > > a·b := La·b + Lb·a > > Wie bereits oben geschrieben, handelt es sich bei XOR um eine Addition; > zumindest kann es so aufgefasst werden wenn man die Darstellung günstig > wählt. > > Weil die H-Trafo linear ist, kann man einfach La mal die H-Trafo von b > addieren, also quasi übereinanderlegen. > Ziel der Trafo, ist es ja eine Korrelation zu erkennen, und wenn man > nach der Korrelation für b sucht, hat man ein fieses Störsignal darauf, > nämlich a. Allerdings weiß man, daß a Periode La hat, die Teilerfremd zu > Lb ist. Beim Überlagern der La Stücke von b wird das Störsignal genau Lb > mal durchlaufen, und zudem fängt es jedesmal an einem anderen Offset an. > > Insgesamt führt dies dazu, daß a nur einen zeitkonstanten Beitrag > liefert und so in der H-Trafo nicht auffällt. War übrig bleibt ist > effektiv die die H-Trafo von b. Genau das macht JPL in ihren Korrelationen. Sie addieren die komplette Sequenz in N Akkumulatoren mit jweils 2^n-1 Elementen und nach vollem Umlauf der Sequenz wenden sie die Korrelation der einzelnen Componentcodes auf diese Akkumulatoren an. Du hast mich aber dahingehend beruhigt bei der Frage ob das schlechter ist als die komplette Sequenz zu korrelieren. Ich war nämlich auch schon der Meinung das das identische Resultate liefert, in Bezug auf das SNR = Signal to Noise Ratio. > Aber welche Dimenson sollte die haben? > Ich seh hier nicht wie man das sonst aufdröseln kann, da man ja immer > das Rauschen der zweiten Komponente eliminieren muss. Jo das ist mir inzwischen auch klar und die Methode von JPL mit den Akkumulatoren ist sowieso die mit der geringsten Rechenkomplexität. Im Anhang mal was zur FHT das es besser erklären kann als ich. Auf Seite 5 werden die Matrix R und S dargestellt und diese sind die Permutationsvektoren um eine MLS für die FHT benutzen kann. Und die Berechnung dieser Vektoren kann man ganz einfach mit dem inversen Polynom zur MLS live durchführen. Das inverse Polynom wird errechnet indem man das Polynom, dargestellt als Binärwert, die Bitreihenfolge spiegelt. Gruß Hagen
und noch eines.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.