Forum: Digitale Signalverarbeitung / DSP / Machine Learning DSP Filter auf dem PC entwickeln, Möglichkeiten und Erfahrungen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Signal Seeker (Gast)


Lesenswert?

Hi.

Ich beabsichtige, digitale Filter zu entwickeln, die entweder auf dem PC 
laufen, oder später bei Bedarf auf einem meiner MC Boards oder, wenn 
nötig, auf einem ESP Eval Board.

Die Programme auf eine andere Sprache um zu schreiben, ist vermutlich 
weniger problematisch.

Aber was empfiehlt sich zunächst auf dem PC? Ein Matlabclone? Delphi 5 
wäre vorhanden und ist recht komfortabel in der Kommunikation mit der 
API? C?

Was habt ihr getestet? Was sind die Erfahrungen?

von Holger (Gast)


Lesenswert?


von -gb- (Gast)


Lesenswert?

Dann werfe ich mal pyfda https://github.com/chipmuenk/pyfda in den Raum. 
Bin sehr zufrieden!

von N. M. (mani)


Lesenswert?

Simulationen kannst du ja erst Mal mit Matlab/Octave machen.

Wenn dann alles passt und so ist wie man es will, den Filter in C/CPP 
überführen.
Mit einem Stimuli kann man PC seitig ja nochmal validieren.

Anschließend sollte der Filter auf dem uC eigentlich schon laufen.

Je nach dem kann man natürlich auch 1-2 Schritte weg lassen.

von Holger (Gast)


Lesenswert?

[#13] FIR Filters - Audio DSP On STM32 (24 Bit / 48 kHz)
https://youtu.be/n9Cy1xkEf1E


https://www.youtube.com/c/YetAnotherElectronicsChannel
Gruss Holger.

von Signal Seeker (Gast)


Lesenswert?

Holger schrieb:
> 
https://www.google.com/search?rlz=1C1GGGE_deDE583DE583&sxsrf=ALiCzsZA0QOFG3aQwOL-DePjvm7beyzTow:1666436353187&q=phil%27s+lab+dsp&spell=1&sa=X&ved=2ahUKEwjkgP2W1_P6AhWBCuwKHT2_B7UQBSgAegQIBxAB&cshid=1666436541477376&biw=1152&bih=606&dpr=1.25

Ich bin nicht auf der Suche nach Videos, die ich kaufen könnte. Auch 
gratis Videos würden nicht meiner Arbeitsweise entsprechen.

Holger schrieb:
> DSP Tutorials

Meine Frage war nicht so allgemein gestellt.

-gb- schrieb:
> Dann werfe ich mal pyfda https://github.com/chipmuenk/pyfda in den
> Raum.
> Bin sehr zufrieden!

Das Tool scheint interessant, ich werde mir das Später einmal ansehen. 
Jetzt geht es eher um die grundlegende Arbeitsweise auf dem PC.

N. M. schrieb:
>  Matlab/Octave -
>  C/CPP -
>  nochmal validieren -
>  uC

Ja so ungefähr habe ich das geplant.
SCI Lab und Delphi laufen bei mir.
Nach Unterlagen für einen rationellen sound API Zgriff in C muss ich 
noch suchen. Vielleicht hast du da konkrete Hinweise aus deiner 
Erfahrung.

Holger schrieb:
> [#13] FIR Filters - Audio DSP On STM32 (24 Bit / 48 kHz)
> https://youtu.be/n9Cy1xkEf1E
> https://www.youtube.com/c/YetAnotherElectronicsChannel

STM32 ist noch nicht Thema.
Für Videos habe ich keine Verwendung

Grüsse und Danke an alle

von Dergute W. (derguteweka)


Lesenswert?

Signal Seeker schrieb:
> Ein Matlabclone?
Yepp (GNU Octave).

Gruss
WK

von Signal Seeker (Gast)


Lesenswert?

Dergute W. schrieb:
> Signal Seeker schrieb:
>> Ein Matlabclone?
> Yepp (GNU Octave).
>
> Gruss
> WK

Ja, das werd ich mir ansehen. Die Frage ist für mich, in wie fern sich 
das von sciLab im beabsichtigten Anwendungsgebiet unterscheidet. 
Vielleicht kennt jemand beides und kann vergleichend berichten.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Signal Seeker schrieb:
> Die Frage ist für mich, in wie fern sich
> das von sciLab im beabsichtigten Anwendungsgebiet unterscheidet.

Ich kenne sciLab nicht, aber ich vermute mal, dass es im Endeffekt eher 
wurscht ist, welches "Tool" man hernimmt. Gemaess:
"A fool with a tool is still a fool" wird's eher drauf ankommen, dass 
man weiss, was man da macht.

Gruss
WK

von Signal Seeker (Gast)


Lesenswert?

Dergute W. schrieb:
> wurscht

Das ist auch mein Eindruck aus der Recherche. Mit scilab bin ich 
vertraut, aber vielleicht ergibt sich mal eine Aufgabe, wo das Andere 
eine komfortablere Lösung anbietet. Ich werd es im Blick behalten.

von W.S. (Gast)


Lesenswert?

Signal Seeker schrieb:
> Ich beabsichtige, digitale Filter zu entwickeln, die entweder auf dem PC
> laufen, oder später...

Einem errechneten Filterkernel ist es völlig schnurz, auf was für einer 
Plattform er später mal laufen soll. Allenfalls wäre das eine Frage, ob 
eine Skalierung für Integer-Rechnung noch nötig ist oder nicht.

Wenn du Delphi 5 hast, dann wäre genau das die m.E. beste Wahl für 
sowas. Wie man digitale Filter rechnet, wirst du vermutlich selber 
wissen, aber als Kontrolle ist es immer nötig, sich mal die 
Filterwirkung anzusehen und für sowas ist Delphi richtig gut. Ich hatte 
mir zu solchem Zwecke mein eigenes Filterbastler-Programm geschrieben - 
mit Delphi 6. Allerdings bin ich im Laufe der Zeit dazu übergegangen, 
die aktuelle Community-Version bei Embarcadero herunterzuladen und es 
jetzt damit zu tun. Das Programm kann je nach Bedarf FIR-Filter 
berechnen - entweder in double oder single oder echt gebrochen mit 
wählbarer Bitbreite und man kann so ein Filter dann an generierten 
Samples auch ausprobieren.

Aber es ist eben ein Bastelprogramm, womit ich einige Zeit an der 
Verquickung von Filter und Phasendrehung (für SSB) herumprobiert habe. 
Man sieht das dem Programm auch an.

Aber: So etwas geht und ist mit Delphi recht leicht zu schreiben und zu 
modifizieren, je nach Gusto. Wer allerdings da nicht weiter einsteigen 
will, kann auch die Programme von Iowa Hills benutzen, die spucken auch 
den berechneten Filterkernel aus. Den muß man dann nur noch in eine Form 
bringen, was die jeweilige Toolchain versteht.

W.S.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

W.S. schrieb:
> Einem errechneten Filterkernel ist es völlig schnurz, auf was für einer
> Plattform er später mal laufen soll.
... solange es ein Prozessor ist, auf dem der Algo als single Core 
arbeiten soll. Wenn man einen Multi-Core hat und auslasten kann (darf?) 
muss man da schon ein wenig Rücksicht nehmen.

Es gibt natürlich Entwickler, die alles als asynchrone Prozessmodule 
formulieren (lassen) und es dann auf Systemen mit OS installieren, damit 
das dann bitte die Abläufe regelt. Kann man machen. Kommt aber in Sachen 
Effizienz der Rechenleistung (und Echzeitfähigkeit!) in etwa das, was 
auch hier passiert, wenn man alles MATLAB überlässt:
Beitrag "Re: Ganzzahlprobleme mit MATLAB"

von Signal Seeker (Gast)


Lesenswert?

Vielen Dank an WS, Jürgen u.a.
Einerseits scheint meine Denkrichtung schon ungefähr zu passen.

Andrerseits kommen vermutlich wichtige Details zur Sprache, die später 
aktuell sein werden, für die man aber besser frühzeitig aufmerksam ist. 
Auch wennn ich diese Details jetzt nicht einzeln kommentiere, schätze 
ich sie und sie sind notiert.

von Bierbaron (Gast)


Lesenswert?

Matlab -> fdatool

von Holger (Gast)


Lesenswert?


von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

Holger schrieb:
> ESP Eval Board

Sorry, oh wie peinlich, das war ein Typo meinerseits. DSP Eval Board war 
gemeint.

Danke für die Hinweise, aber die Grundlagen Literatur habe ich schon 
ausreichend gefunden. Mir gings eher um die  Praxis Tools und das ist 
nun gut geklärt.

von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

OK
ein paar einfache Sachen gehen schon mit dem sci Lab. ZB. ein simples 
Korrelationsfilter.

Als Nächstes will ich das auf dem PC umsetzten, so dass ich Audio 
durchschleifen kann.

von Murkser (Gast)


Lesenswert?

das schreit wieder nach einer window funktion

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Signal Seeker schrieb:
> Was habt ihr getestet? Was sind die Erfahrungen?

Schau dir mal Synthmaker, FlowBotics oder FlowStone an.
Da hast du:
1. Gerade DSP als Programiersprache mit drin.
2. Versteht es auch LUA
3. Kannst du Logische Verschaltungen realisieren (sowohl analog wie 
Digital)
4. Unterstützt FlowStone oder FlowBotics auch Videoapplikationen
5. Gibt es grad im Filterbereich zig ApplikationsExample zum download.
6. Kan FlowStone und Synthmaker direkt DLL's oder EXE Produzieren.

Gruß

von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

Patrick L. schrieb:
> Schau dir mal Synthmaker, FlowBotics oder FlowStone an.

Danke für die Antwort, das scheint mir nicht das zu sein, was ich zur 
Zeit brauche.

Ich arbeite mich grad in die Basics von DSP ein und beschränke mich auf 
Audio Anwendungen d.h. für mich Tonfilter, Rauschunterdrückung, 
Störaustastung, Weak Signals, Demodulation von OOK, AFSK, BPSK, 
Sprachkompression, Bandbreitenbegrenzung, Squelch, selektiver Squelch. 
Basics heisst im Moment, dass ich alles zu Fuss programmiere und kein 
Elemente aus Libs zusammen hänge.

Murkser schrieb:
> das schreit wieder nach einer window funktion

Magst du das näher ausführen, oder war es das schon?

Weiter oben ist der Frequenzgang meines Korrelationsfilters zu sehen und 
hier die Impulsantwort. Die Bandbreite ist wie gewünscht 20Hz bei 1kHz 
Mittenfrequenz. Die Abschwächung im Sperrbereich ist eher schwach.

Den Kernel kann ich auf die übliche Art nicht fenstern, da ich rein 
rekursiv filtere, was zur Folge hat, dass jedes Sample gleich gewichtet 
ist, egal wie weit zurück es liegt. Die rein rekursive Filterung hat nun 
mal einen recht grossen Geschwindigkeits Vorteil bei einer Filterlänge 
von 800 Samples.

von Murkser (Gast)


Lesenswert?

Signal Seeker schrieb:
> Die Abschwächung im Sperrbereich ist eher schwach.
Genau. Deshalb Windowfunktion. Schau die mal die ganzen threads dazu an. 
Die Seiten hier und andere im Netz sind voll davon

Signal Seeker schrieb:
> Ich arbeite mich grad in die Basics von DSP ein und beschränke mich auf
> Audio Anwendungen d.h. für mich
Da hast du dir ja was vorgenommen. Hast du denn schon das theoretische 
Wissen dafür und willst jetzt nur bestimmte DSPs nutzen, oder sollen die 
DSPs das Verhikel sein, um sich die SW und Signaltheorie zu erarbeiten? 
Weil dann Prost!

von Signal Seeker (Gast)



Lesenswert?

Murkser schrieb:
> Schau die mal die ganzen threads dazu an.
> Die Seiten hier und andere im Netz sind voll davon

Die allgemeinen Vorschläge und Statements nützen wenig. Ersteres mache 
ich bereits und gerade diese voll davon sein, macht die allgemeine Suche 
sinnlos.

Murkser schrieb:
> Signal Seeker schrieb:
>> Die Abschwächung im Sperrbereich ist eher schwach.
> Genau. Deshalb Windowfunktion.

Aber das war der konkreteHinweis, der weiter geführt hat. Beim Smith 
konnte ich auch lesen, dass das Fenstern im Nachhinein equivalent ist 
zum Fenstern eines Kernels. Also hab ich auf ein Verfahren zurück 
gegriffen, das ich schon mal eingesetzt habe, und nach Gehör eine 
Verbesserung bemerkt habe. Jetzt habe ich es abgewandelt und ich sehe 
auch in der Durchlasskurve eine Veränderung in die richtige Richtung. 
Ich werde eine logarithmische Darstellung brauchen.

Den Verlauf vom Betrag des komplexen Korrelationskoeffizienten habe ich 
mit einem gleitenden IIR Mittelwert verknüpft. Das Ergebnis ist im 
Anhang zu sehen.

Murkser schrieb:
> Da hast du dir ja was vorgenommen.

Sollte machbar sein.

Murkser schrieb:
> Hast du denn schon das theoretische
> Wissen dafür und willst jetzt nur bestimmte DSPs nutzen, oder sollen die
> DSPs das Verhikel sein, um sich die SW und Signaltheorie zu erarbeiten?

Weder - noch.
Die Signaltheorie beherrsche ich keineswegs. Sie ist aber auch nicht 
Selbstzweck. Sie mir abstrakt zu erarbeiten, dazu habe ich nicht die 
Geduld. Die ST sehe ich mir an, wie ich sie gerade benötige, sie ist 
Vehikel um mit anwendbarer Software zu experimentieren. Der erste 
Schritt ist nun der angesprochene Tonfilter.

Noch arbeite ich auf dem Algebra Interpreter. Da sehe  die Ergebnisse 
schnell. Dann portiere ich nach Object Pascal und kann mir echte NF 
Signale aus dem KW Empfänger zeitnah gefiltert anhören.

von Signal Seeker (Gast)


Lesenswert?

Signal Seeker schrieb:
> Murkser schrieb:
>> Signal Seeker schrieb:
>>> Die Abschwächung im Sperrbereich ist eher schwach.
>> Genau. Deshalb Windowfunktion.
>
> Aber das war der konkreteHinweis, der weiter geführt hat. Beim Smith
> konnte ich auch lesen, dass das Fenstern im Nachhinein equivalent ist
> zum Fenstern eines Kernels. Also hab ich auf ein Verfahren zurück
> gegriffen, das ich schon mal eingesetzt habe, und nach Gehör eine
> Verbesserung bemerkt habe. Jetzt habe ich es abgewandelt und ich sehe
> auch in der Durchlasskurve eine Veränderung in die richtige Richtung.
> Ich werde eine logarithmische Darstellung brauchen.
>
> Den Verlauf vom Betrag des komplexen Korrelationskoeffizienten habe ich
> mit einem gleitenden IIR Mittelwert verknüpft. Das Ergebnis ist im
> Anhang zu sehen.

SORRY, da ist viel falsch daran.
Die Kurven zeigen irrtümlicher Weise etwas anderes.
Der gleitende Mittelwert verbessert zwar das Ausgangssignal bei viel 
weissem Rauschen, ändert aber am Frequenzgang nichts. Es werden 
lediglich kurze Störimpulse unterdrückt.

Nun gut. Eine Erfahrung und eine Erkenntnis. Morgen gehts weiter.

von Murkser (Gast)


Lesenswert?

Signal Seeker schrieb:
> Die ST sehe ich mir an, wie ich sie gerade benötige, sie ist
> Vehikel um mit anwendbarer Software zu experimentieren.
Du weist aber ohne Wissen über ST nicht, wann du etwas benötigst und was 
genau. Ohne Wissen, was es gibt, kommt man nicht auf die Idee, es 
einzuplanen und zu probieren. So tastest du die Welt der 
Signalverarbeitung mit try and error ab und benötigst zum völligen 
Verstehen eines Sachverhaltes ein Vielfaches an Zeit.

Signal Seeker schrieb:
> Sie mir abstrakt zu erarbeiten, dazu habe ich nicht die Geduld.
Beste Voraussetzungen, sich zu verrennen und alle Räder neu zu erfinden. 
Das Lesen eines guten Buches garantiert, dass man richtige Informationen 
bekommt und nicht auf Frickelfragerei in Foren angewiesen ist. Darf ich 
mal schätzen:

Du bist U30, hast maximal bachel und eine Riesenportion 
Selbstbewusstsein, alles zu packen, was du anfässt ... richtig?

Signal Seeker schrieb:
> SORRY, da ist viel falsch daran.
> Die Kurven zeigen irrtümlicher Weise etwas anderes.
Nö, die zeigen genau das: Die Seitenbanddämpfung ist besser, damit 
filtert das Filter genauer. Und natürlich filtert es bis auf seine 
Schwächen genau so, wie es gebaut wurde.

Signal Seeker schrieb:
> Der gleitende Mittelwert verbessert zwar das Ausgangssignal bei viel
> weissem Rauschen, ändert aber am Frequenzgang nichts.
Natürlich ändert der den Frequenzgang. Er ist ja ein Tiefpass. Ein 
schlechter, aber ein Tiefpass.

Was man bei deinen verfensterten Kurven übrigens sieht:
Das Fenster ist viel zu eng. Du versuchst einen Tiefpass zu bauen, 
dessen Grenzfrequenz viel zu tief ist im Bezug auf die Zahl der Samples. 
Damit wirkt das Fenster selber als Tiefpass. Das Fenster und die 
Filterkurve vereinigen sich ja. Da kann man den MA-Filter gleich 
weglassen.

von Blechbieger (Gast)


Lesenswert?

Signal Seeker schrieb:
> Ein Matlabclone?

Wie wäre es mit dem Original? Mittlerweile gibt es die bezahlbare 
Home-Lizenz, 119 Euro + 35 Euro pro Toolbox + Mwst.

https://de.mathworks.com/store/link/products/home/ML

von Murkser (Gast)


Lesenswert?

Blechbieger schrieb:
> Mittlerweile gibt es die bezahlbare
> Home-Lizenz,

Und warum gibt es die? Weil die open source inzwischen so stark sind, 
dass MATHWORKS um seine Position bangt

Was soll jemand mit MATLAB home?  Wer es wirklich braucht, hat es im 
Job. Und daheim mache ich nichts, was Job ist.

von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

Murkser schrieb:
> Signal Seeker schrieb:
>> SORRY, da ist viel falsch daran.
>> Die Kurven zeigen irrtümlicher Weise etwas anderes.
> Nö, die zeigen genau das: Die Seitenbanddämpfung ist besser, damit
> filtert das Filter genauer. Und natürlich filtert es bis auf seine
> Schwächen genau so, wie es gebaut wurde.

Vielleicht war das von mir nicht deutlich genug geschrieben. Durch einen 
Tippfehler zeigt die Kurve keinen TP und keine Fensterung. Es wurde eine 
andere, hier irrelevante Variable gezeigt. Es ist sinnlos, da etwas 
hinein interpretieren zu wollen. Wie gesagt: "Die Kurven zeigen 
irrtümlicher Weise etwas anderes."

Wenn ich den Tippfehler korrigiere, dann sehe ich den Frequenzgang des 
Signals nachdem es erst das Korrelationsfilter durchlaufen hat und 
anschliessend den TP. Die Nebenmaxima bleiben gleich hoch. Das ist 
unabhängig von der Länge des GM.

Nochmals: das hilft etwas gegen weisses Rauschen, aber nicht gegen 
starke Störer mit Sinussignal neben der Mittenfrequenz.

Ganz anders sieht es aus, wenn ich das Korrelationsfilter durch Faltung 
mit einem Sinus nachbilde. Das ist zunächst das Selbe wie das 
Korrelieren. Vor der Faltung kann ich den Kernel überarbeiten und ich 
drücke die Nebenmaxima runter. Das kostet etwas Bandbreite. ABER es 
kostet immens Rechenzeit. Diese Variante ist ebenfalls nicht 
praktikabel.

Da wird es ein Wiener Filter brauchen.

von W.S. (Gast)


Lesenswert?

Murkser schrieb:
> Signal Seeker schrieb:
>> Sie mir abstrakt zu erarbeiten, dazu habe ich nicht die Geduld.
> Beste Voraussetzungen, sich zu verrennen und alle Räder neu zu erfinden.

Nun ja, manchmal ist es einfach nur Vergessenhaben. Hast du deine alten 
Vorlesungs-Mitschriften noch? Ich hatte vor einiger Zeit meine 
Mathe-Mitschriften hervorgekramt, um wegen der Hilbert-Transformation 
mal was nachzuschlagen. Ergebnis: Ich hab wie das berüchtigte Schwein 
ins Uhrwerk geschaut - in meine eigenhändigen Mitschriften. Damals war 
mir das alles derart sonnenklar, daß ich sowas niemals vermutet hätte. 
Ich hatte dann einige meiner Kommilitonen gefragt, wie es denen mit 
sowas geht. Ergebnis: fast alles vergessen, jedenfalls die Details.

Also: es ist normal, daß man in seinem Leben manche Räder zum zweiten 
Mal erfinden muß bzw. daß man einstmaliges Wissen sich neu aneignen muß, 
weil man es zwischendurch schlichtweg vergessen hat.

W.S.

von c-hater (Gast)


Lesenswert?

W.S. schrieb:

> Also: es ist normal, daß man in seinem Leben manche Räder zum zweiten
> Mal erfinden muß bzw. daß man einstmaliges Wissen sich neu aneignen muß,
> weil man es zwischendurch schlichtweg vergessen hat.

Das kann ich definitiv bestätigen.

von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

Es ist ja auch in Ordnung, bereits erfundene Räder zu entdecken, oder 
für sich später wieder zu entdecken. Das Anpassen und Einsetzen für 
aktuelle Anwendungen erfordert eh noch ausreichend Beschäftigung und 
Arbeit. Aber genug der wohlfeilen allgemein gültigen Weisheiten, zurück 
zu den Mühen des technischen Themas. ;)

Jetzt hab ich mal das Korrelationsfilter auf ein "leicht" verrauschtes 
Signal angewendet und geschaut, ob sich das Signal rekonstruieren lässt. 
OK, es liess sich rekonstruieren.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Ich möchte hier nochmals einklinken, den:

Signal Seeker schrieb:
> Patrick L. schrieb:
>> Schau dir mal Synthmaker, FlowBotics oder FlowStone an.
>
> Danke für die Antwort, das scheint mir nicht das zu sein, was ich zur
> Zeit brauche.
>
> Ich arbeite mich grad in die Basics von DSP ein und beschränke mich auf
> Audio Anwendungen d.h. für mich Tonfilter, Rauschunterdrückung,
> Störaustastung, Weak Signals, Demodulation von OOK, AFSK, BPSK,
> Sprachkompression, Bandbreitenbegrenzung, Squelch, selektiver Squelch.
> Basics heisst im Moment, dass ich alles zu Fuss programmiere und kein
> Elemente aus Libs zusammen hänge.

Weil grad Synthmaker und FlowStone, sind in dem Sektor extrem Stark mit 
dem DSP Libs bewandert.

ich habe sehr viele Audiosachen, mit SynthMaker realisiert.
Auch schon einige Mesgeräte Software mit FlowStone umgesetzt.
Im Forum von FlowStone sind Tausende beispiele für Filterschaltungen, 
wie ich sie hier im Forum Thread bis jetzt gelesen habe.

Gruß Patrick

von Audiomann (Gast)


Lesenswert?

Signal Seeker schrieb:
> wenn ich das Korrelationsfilter durch Faltung
> mit einem Sinus nachbilde.
Kannst ja mal probieren ein 50Hz-Filter zu bauen und meine 
Beatles-Aufnahmen von den alten Platten zu entbrummen:
Beitrag "Signalqualität und Signalbearbeitung bei alten Aufnahmen"

von Signal Seeker (Gast)


Lesenswert?

Audiomann schrieb:
> ein 50Hz-Filter

Brummfilter gibt es sicher genug Fertige. Genauere Info kannst du leicht 
suchen. In meinem Projekt ist Brumm kein Thema.

Hör dir doch das Beispiel an, es zeigt, um was es hier geht.

Vorher: 
https://www.mikrocontroller.net/attachment/575150/v-rausch-10.wav

 ===>> Verarbeitung mit Korrelationsfilter ===>>

Nachher: 
https://www.mikrocontroller.net/attachment/575151/v-rausch-10-filtered.wav

Dieser Unterschied, mit wenigen Zeilen Code erreicht, das ist hier 
Thema.

von Signal Seeker (Gast)


Angehängte Dateien:

Lesenswert?

Damit man die Stärken des Korrelationsfilters wirklich gut nutzen kann 
und dabei nicht all zu viel Rechenzeit braucht, empfiehlt es sich, das 
filternde Programm auf das im Zeitraster gesendete Signal zu 
synchronisieren.

Ein relativ einfacher synchronisier Algorithmus liess sich im scilab 
bequem entwickeln und testen.

von noch einer (Gast)


Lesenswert?

Signal Seeker schrieb:
> auf das im Zeitraster gesendete Signal zu
> synchronisieren.
... das kennt man aber in der Regel nicht. Im Gegenteil - das ist zur 
annehmenden domain völlig asynchron.

von Signal Seeker (Gast)


Lesenswert?

noch einer schrieb:
> ... das [Zeitraster] kennt man aber in der Regel nicht.

jein

Die Zeitpunkte, an denen Zustands Änderungen eintreten können, sind 
zunächst meistens nicht bekannt. Selbst wenn wenn zu bekannten 
Zeitpunkten gesendet wird, verderben Laufzeiten, Verarbeitungszeiten und 
veränderliche Reflexionen (Ionosphäre) die Möglichkeit, ohne Weiteres 
synchron zu empfangen.

ABER die Abstände der entscheidenden Zeitpunkte sind mit hinreichender 
Genauigkeit bekannt. Das ist bei präzise gegebener Morse Telegrafie so, 
beim klassischen Fernschreiben und bei den modernen digitalen 
Übertragungstechniken ebenfalls.

Es ist daher nur erforderlich, den Kanal zu beobachten und Korrelationen 
aus zu werten. Dass Letztere noch stark Fehler behaftet sind, ist 
unerheblich. Es ist ausreichend, Tendenzen zu erkennen, um die abtast 
Zeitspannen zu verschieben. Das realisiert man am Besten iterativ. 
Sobald die Abtastung eingerastet ist, kann man noch einen eventuell 
vorhandenen Fehler der abtast Frequenz ausregeln. Mit diesen 
Voaussetzungen kann dann ein Korrelationsfilter oder ähnlich Zeit 
aufwändige Techniken verwendet werden, da der Grossteil der Rechnerei 
nur jeweils am Ende der Bits nötig ist. Die fortlaufende Decodierung 
erfolgt nun synchron im Raster. Der Auswertungs Takt wird natürlich über 
Fehler hinweg und über Sendepausen aufrecht erhalten.

In der geposteten Grafik ist der Vorgang zu sehen. Bildunterschrift und 
die Legende sollten Näheres erläutern.

von oly (Gast)


Lesenswert?

Signal Seeker schrieb:
> In der geposteten Grafik ist der Vorgang zu sehen. Bildunterschrift und
> die Legende sollten Näheres erläutern.

ja genau, völlig eindeutig. Braucht keinen Text. Alles verstanden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.