mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Drei verschiedene Rauscharten erkennen


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 SignalProcessingBeta (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe Probleme bei einer Übungsaufgabe in Matlab, wobei ich die 
Aufgabe natürlich selbst implementieren werde und euch nur um ein paar 
Tipps bitten möchte.

Der erste Teil der Aufgabe besteht darin in einem Datensatz drei 
verschiedene Rausch- und Störungsarten zu erkennen und diese einzeln 
herauszufiltern.
Anschließend soll man eine AM und FM Demodulation des gefilterten 
Signals vornehmen.

Leider habe ich mit dem ersten Teil der Aufgabe meine Probleme, da das 
einzige Rauschen dass ich identifizieren kann additives Gaußsches 
Rauschen ist.

Ich habe Matlab ein Plot des verrauschten Signals im Zeitbereich und 
dessen Amplitudenspektrum erstellt und hänge es diesem Thread an. 
Erkennt jemand von euch noch eine andere Rausch- oder Störungsart?

von Marek N. (bruderm)


Bewertung
0 lesenswert
nicht lesenswert
Naiver Ansatz:
Setze im Spektrum an den Stellen, wo das Sinussignal ist Nullen ein. 
Mache eine inverse FFT und subtrahiere dieses Signal von deinem 
eigentlichen verrauschten Signal. Es müsste der ziemlich unverrauschte 
Sinus übrig bleiben.

von Tobias S. (signalprocessingbeta)


Bewertung
0 lesenswert
nicht lesenswert
Achja, ich sollte wohl noch dazu sagen dass das Trägersignal eine 
Carrierfrequenz von 50 Hz hat und mit 2048 Hz gesampelt wurde.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tobias S. schrieb:
> Achja, ich sollte wohl noch dazu sagen dass das Trägersignal eine
> Carrierfrequenz von 50 Hz hat und mit 2048 Hz gesampelt wurde.

Das sieht man in deinem Amplitudenspektrum: Der Peak vom Träger bei 50Hz 
und die Breite von fa/2=1024Hz ;-)

von Tobias S. (signalprocessingbeta)


Bewertung
0 lesenswert
nicht lesenswert
Marek N. schrieb:
> Naiver Ansatz:
> Setze im Spektrum an den Stellen, wo das Sinussignal ist Nullen ein.
> Mache eine inverse FFT und subtrahiere dieses Signal von deinem
> eigentlichen verrauschten Signal. Es müsste der ziemlich unverrauschte
> Sinus übrig bleiben.

Danke für den Tipp, sowas ähnliches (alles außer dem Bereich um die 50 
Hz auf Null zu setzen) habe ich schon gemacht und es hatte auch soweit 
funktioniert, allerdings ist die Aufgabe ja drei verschiedene Rausch- 
und Störungsarten zu identifizieren und jede davon einzeln zu filtern.

EDIT: Also bevor ich mich nicht detailliert genug ausdrücke versuche ich 
es weiter zu beschreiben:
Für jede Rauschart sollen/können wir einen anderen Filter benutzen: Z.B. 
FFT-Filter (wie bereits erwähnt), einen simplen Medianfilter, 
Wiener-Filter, einen adaptiven Filter usw.
Es sollte halt bestenfalls ein sinnvolles Vorgehen sein und zu der 
jeweiligen Rauschart passen.

Wolfgang schrieb:
> Tobias S. schrieb:
>> Achja, ich sollte wohl noch dazu sagen dass das Trägersignal eine
>> Carrierfrequenz von 50 Hz hat und mit 2048 Hz gesampelt wurde.
>
> Das sieht man in deinem Amplitudenspektrum: Der Peak vom Träger bei 50Hz
> und die Breite von fa/2=1024Hz ;-)

Ja stimmt :-)

: Bearbeitet durch User
von Jan K. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hi,

weiß du denn, wie man verschiedene Rauscharten identifiziert? Spektrum 
ist ja schonmal ein guter Ansatz, aber es gibt auch Autokorrelation, 
Allan Variance und so. Letzteres geht vielleicht etwas zu weit.

Wenn man sich aber stumpf das Zeitsignal anguckt, sind da so einzelne 
Peaks drin. Ist das nur jeweils ein Sample oder vielleicht 2? Das wäre 
dann sogenanntes https://en.wikipedia.org/wiki/Salt-and-pepper_noise. 
Das filterst du am besten mit einem Median Filter im Zeitbereich.

Periodisches "Rauschen" (oder wie bei dir zum Teil auch Nutzdaten) 
filtert man mit Notch Filtern im Zeit oder Frequenzbereich. Du könntest 
z.B. mal gucken, wie das Rauschen aussieht, wenn du die 50 Hz Signale 
temporär wegfilters.

Außerdem hast du einen Gleichanteil, der kann z.B. durch 
Mittelwertbildung (nicht gleitend, also kein Filter) eliminiert werden 
(vermutlich nach Eliminierung des Salt+Pepper).

Du solltest auch das Spektrum auf der y-Achse in dB skalieren, dann 
sieht man deutlich mehr.

Womit ist das Spektrum generiert? pwelch? periodogram?

Weißes Rauschen hast du ja schon gesehen. Dagegen hilft moderate 
gleitende Mittelwertbildung.

von Tobias S. (signalprocessingbeta)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jan K.

Jan K. schrieb:
> Hi,
>
> weiß du denn, wie man verschiedene Rauscharten identifiziert?

Nein, leider nicht. Dashier ist mein erstes mal.

Jan K. schrieb:
> Spektrum ist ja schonmal ein guter Ansatz, aber es gibt auch Autokorrelation,
> Allan Variance und so. Letzteres geht vielleicht etwas zu weit.
>
> Wenn man sich aber stumpf das Zeitsignal anguckt, sind da so einzelne
> Peaks drin. Ist das nur jeweils ein Sample oder vielleicht 2?

Ich habe gerade mal den Datensatz daraufhin überprüft. Es scheint 
jeweils nur Sample zu sein, welches den Peak erzeugt. In dem angehängten 
Bild "VerrauschtesSignal" sollte man dies sehen können.

Jan K. schrieb:
> Das wäre dann sogenanntes https://en.wikipedia.org/wiki/Salt-and-pepper_noise.
> Das filterst du am besten mit einem Median Filter im Zeitbereich.
>
> Periodisches "Rauschen" (oder wie bei dir zum Teil auch Nutzdaten)
> filtert man mit Notch Filtern im Zeit oder Frequenzbereich. Du könntest
> z.B. mal gucken, wie das Rauschen aussieht, wenn du die 50 Hz Signale
> temporär wegfilters.

Ok, ist erledigt. Ist in der Grafik "50HzGefiltert" zu sehen.

Jan K. schrieb:
> Außerdem hast du einen Gleichanteil, der kann z.B. durch
> Mittelwertbildung (nicht gleitend, also kein Filter) eliminiert werden
> (vermutlich nach Eliminierung des Salt+Pepper).
>
> Du solltest auch das Spektrum auf der y-Achse in dB skalieren, dann
> sieht man deutlich mehr.

Auch erledigt. Ist als "Leistungsspektrum" abgebildet.

Jan K. schrieb:
> Womit ist das Spektrum generiert? pwelch? periodogram?

Ich habe die Amplitudenpektra einfach mit dem Matlab-Befehl plot 
erzeugt. Zuvor habe ich die Fourier Transformation durchgeführt und aus 
den Fourierkoeffizienten das Amplitudenspektrum berechnet.

Die Leistungsspektra habe ich mit dem signalAnalyzer erstellt.

Jan K. schrieb:
> Weißes Rauschen hast du ja schon gesehen. Dagegen hilft moderate
> gleitende Mittelwertbildung.

Danke vielmals für die Tipps.

Könnte man das DC-Signal als Störung sehen?
Was mir auch noch aufgefallen ist, ist dass der maximale Peak im 
Amplitudenspektrum bei 52,5 Hz und nicht bei 50 Hz ist. Die 
Carrierfrequenz beträgt allerdings exakt 50 Hz. Hat das was zu bedeuten? 
Das kann man in der Grafik "PeakImAmplitudenspektrum" sehen.

von Tobias S. (signalprocessingbeta)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen.
Mittlerweile habe ich das Rauschen mehr oder weniger rausfiltern können.
Die Rauscharten/Störungen sind:
- Additives weißes Rauschen, also die Spikes
- "Hintergrundrauschen", also alles was im Amplitudenspektrum kein 
Signal ist
- Die Störung ist der extrem hohe Spike bei 52,5 Hz, da der Spike zu 
groß ist im Vergleich zu dem eigentlichen Signal bzw. dem 50 Hz Carrier

Nachdem ich das weiße Rauschen mit dem Medianfilter gefiltert habe und 
den Fourierkoeffizienten für die Frequenz von 52,5 Hz auf null gesetzt 
und somit die Störung gefiltert habe, war das Signal im Zeitbereich 
allerdings immer noch nichtssagend. Auch nachdem ich das 
Hintergrundrauschen herausgefiltert habe.

In dem Bild "AmplitudenspektrumCarrierNoise" sieht man den Ausschitt im 
Amplitudenspektrum um die Carrierfrequenz und dabei ist mir etwas 
aufgefallen: Durch die FM-Modulation hat das Signal von 50 Hz aus immer 
einen Abstand von +- 2 Hz, also dessen Harmonische, wenn man so will.
Deshalb habe ich alle Fourierkoeffizienten, bis auf die Harmonischen 
herausgefiltert und die Harmonischen symmetrisch gemacht.
Das Resultat kann man in dem Bild "AmplitudenspektrumGefiltert" sehen.

Haltet ihr das Vorgehen für korrekt? Mein Gedanke dahiner war halt dass 
das Hintergrundrauschen ja auch auf das Signal hinzuaddiert wird und die 
Symmetrie dadurch verloren gegangen ist. Also habe ich einfach zwischen 
den positiven und negativen Harmonischen jeweils den Mittelwert gebildet 
und übernommen. Das resultierende Signal im Zeitbereich ist in 
"GefiltertesSignal" zu sehen.

Allerdings sieht das Signal für mich immer noch nicht nach einer 
AM-Modulation aus. Was würdet ihr dazu sagen?

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.