WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Signal entrauschen

 

Giuseppe
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2011, 09:43     Titel: Signal entrauschen
  Antworten mit Zitat      
Hallo Leute,

z.Zt. beschäftige ich mich mit einem optischen Positionsmesssystem. Die erhaltenen Werte sind zwar zufriedenstellend aber leider verrauscht. Im Zeitsignal sind verschiedene Peaks zu sehen, die auch in der FFT dargestellt werden. Leider ist in der kompletten FFT auch ein Rauschniveau zu sehen, siehe Bilder. Wenn ich nun diese Wegmessung im Frequenzbereich zum Beschleunigungssignal "differenziere" (*-Omega^2) wird leider das Rauschen verstärkt. Dieses Rauschen kommt wohl vom Bildrauschen der Messung. Habe schon einiges versucht, aber leider wird es nicht besser. Wavelet klang sehr vielversprechend aber leider wurden die kleinen Peaks, zu Beginn der Zeitmessung, fast vollständig unterdrückt. Teilweise wurde durch Wavelet auch eine weitere Frequenz dem System aufgeprägt, ein zusätzlicher sehr hoher Peak in der FFT. Da ich mich mit Wavelet-Transformation nicht auskenne habe ich diese möglicherweise nicht korrekt angewandt.
Habt ihr da noch weitere Ideen, wie ich das Signal entrauschen oder zumindest "aufpolieren" kann? Die Rauschamplitude sollte ungefähr dem Rauschen in der Mitte des Zeitschriebs entsprechen. Mit der Wavelet Funktion "wden" kann man leider keine Peaks o.ä. angeben. Hier http://cnx.org/content/m18990/latest/ habe ich etwas gefunden, aber leider scheint es kommerziell zu sein.
(Da das Rauschen über alle Frequenzen vorhanden ist, bringt ein Hoch-, Tief- oder Bandpassfilter bisher nicht zum gewünschten Ergebnis Sad )

fft_beschleunigung.png
 Beschreibung:
FFT-Beschleunigung

Download
 Dateiname:  fft_beschleunigung.png
 Dateigröße:  9.97 KB
 Heruntergeladen:  1201 mal
fft_verschiebung.png
 Beschreibung:
FFT-Verschiebung

Download
 Dateiname:  fft_verschiebung.png
 Dateigröße:  7.81 KB
 Heruntergeladen:  1128 mal
zeitsignal.png
 Beschreibung:
Zeitsignal

Download
 Dateiname:  zeitsignal.png
 Dateigröße:  11.07 KB
 Heruntergeladen:  1171 mal
Private Nachricht senden Benutzer-Profile anzeigen


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2011, 10:22     Titel:
  Antworten mit Zitat      
Hallo,
ich versuche mich gerade auch ein bißchen an der Wavelet-Transformation. Hierzu verwende ich die Toolbox "Wavelab850" (einfach bei google danach suchen). Ob sich die Wavelet Transformation zum entrauschen deines Signals eignet, kann ich natürlich nicht spontan sagen. Aber einen Versuch ist es sicher wert. In einem Paper wurde eine ähnliche Kurve wie deine mit dem Daubechies-2 Wavelet entrauscht. Damit würde ich also einfach mal anfangen und ein paar Tests machen. Als Threshold wurde die Donoho-Johnstone "universal" Methode verwendet. Das sagt mir zwar bis jetzt nichts, aber es gibt sicher ein paar Paper dazu bei google.
Am Anfang könntest du allerdings auch einfach mal einen Median oder einen Mittelwert- Filter verwenden - vielleicht reicht das ja schon und du musst nicht erst Wavelets verwenden.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Giuseppe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2011, 08:49     Titel:
  Antworten mit Zitat      
Danke,
mit einem Medianfilter klappt es leider nicht, da die signifikanten Peaks dadurch auch abgeschwächt werden. Zum Thema Wavelet, da konnte ich die empfohlene Funktion db2 anwenden, allerdings auch ohne den gewünschten Effekt, allerdings konnte ich die Threshold-Funktion "Donoho-Johnstone "universal" Methode" nicht anwenden, sie steht anscheinend bei der Wavelet-Toolbox von Matlab nicht zur Verfügung.
Aber trotzdem Danke für deine Hilfe.

Gruß,
Giuseppe
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2011, 14:04     Titel:
  Antworten mit Zitat      
Hi,
deine Daten sind doch recht gut. Versuch mal eine Faltung mit einer Gausskurve,d.h. nach der FFT die Hohen Frequenzen abzuschneiden. Mit der Halbwertsbreite kannst du dann die Stärke der Rauschunterdrückung einstellen. Würd mich wundern wenn das nicht geht mit deinen Daten.
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Giuseppe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2011, 15:09     Titel:
  Antworten mit Zitat      
Hi Kevin,

wie meinst du das mit "hohen Frequenzen abschneiden"? In der FFT zu Null setzen? Ich habe ja auch im hohen Frenquenzbereich 2 Peaks, die ich darstellen will. Wenn du irgendeinen Link hast damit ich mich einlesen kann wäre ich dir dankbar.

Gruß,
Giuseppe
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2011, 15:15     Titel:
  Antworten mit Zitat      
Hi,
nach der FFT bekommst du ja die Fourierkoeffizienten über der Frequenz (oder wahrscheinlich omega). Diese Koeffizienten multiplizierst du dann mit einer Gausskurve. Danach machst du eine Rücktransformation und hast das geglättete Signal. Mit der Halbwertsbreite der Gausskurve kannst du dann einstellen, ab wo die Fourierkoeffizienten klein werden.
Wenns dabei passiert, dass die Ränder krumpelig werden, dann kannst du vor der ersten FFT die Daten künstlich verlängern.
Nen vernünftigen link hab ich nicht gefunden. Und der Wikiartikel ist ein Beispiel für eine didaktische Verfehlung.
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 13.10.2011, 15:46     Titel:
  Antworten mit Zitat      
In meinen Augen wird dann aber auch der hochfrequente Teil gedämpft.

Die Multiplikation mit der Gaussglocke im Frequenzraum ist ja nichts weiter als eine Faltung im Zeitbereich. Die Gaussglocke hat Tiefpassverhalten und wird somit höhe Frequenzen dämpfen. Das ist ja aber nicht erwünscht. Es sollen bestimmte sowohl nieder- als auch hochfrequente Signalanteile bestehen bleiben.

Hast du das Signal mal mit der Toolbox und Wavelet - 1D zerlegt? Kann das Signal überhaupt in die gewünschten Anteile zerlegt werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2011, 15:59     Titel:
  Antworten mit Zitat      
@DSP
Hast du meinen Vorschlag mal probiert? Surprised

Welche hochfrequenten Signale denn? Das Rauschen ist wesentlich höher als die Peaks.

@Guiseppe
geht das dass du einen Auschnitt der Daten hochlädst? Dann könnte man mal ein bisschen rumprobieren. Das Problem sieht mir nämlich bekannt aus.
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Giuseppe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2011, 16:14     Titel:
  Antworten mit Zitat      
Hi,

das Rauschen ist über den kompletten Frequenzband zu sehen. Daher ist es in allen Frequenzen vorhanden. Die FFT ist über der Frequenz geplottet. Die Samplingrate war 300Hz, daher die FFT bis 150Hz.

Wenn ich eine Gaußkurve über die FFT lege gehe ich stark davon aus, dass die hohen Peaks auch gedämpft werden.

Ich lade gleich mal ein Datensatz hoch...ich denke *.mat wird das beste sein Wink

Meine Schwierigkeit liegt ja darin, dass ich das Rauschen über einen Hoch-, Tief- oder Bandpass nicht rausbekomme. Eine Gaußkurve wär ja quasi ein Bandpass (oder Tiefpass, wie schon DSP schrieb, wenn sie von -150 bis +150Hz einhüllt) welches die hohen und niedrigen Frequenzen stark abschwächt.
Mit Wavelet kenne ich mich nicht aus. Aber ich habe verschiedene Funktionen mit unterschiedlichen Parametern getestet, leider nicht besonders erfolgreich. Ich bräuchte eine Waveletfunktion, bei der ich das Rauschniveau (Threshold) manuell vorgebe, so wie die Funktion, auf die der Link in meinem ersten Post hinführt. Vor allem die Matlab-Funktion WDEN habe ich zur genüge getestet. Aber der Threshold wird bei den möglichen Parametern irgendwie automatisch "erkannt". Leider sind meine Peaks bei den hohen Frequenzen so klein im Vergleich zum Rauschen, dass diese auch stark gedämpft werden...

Danke übrigens für eure Hilfe Smile

zeitsignal.rar
 Beschreibung:
Zeitsignal

Download
 Dateiname:  zeitsignal.rar
 Dateigröße:  200.01 KB
 Heruntergeladen:  658 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 14.10.2011, 10:19     Titel:
  Antworten mit Zitat      
@ Kevin: Nein...ich hatte es nicht getestet, da ja noch keine Daten vorlagen. Ich kenne aber die Frequenzantwort der Gausskurve und die hat nun mal Tiefpassverhalten.

Ich habe es nun auch mit den Daten probiert und kann das Signal nicht wie gewünscht Filtern, egal wie ich die Fensterlänge oder den alpha Wert wähle.

Code:

signal = zeitsignal(:);
N = length(signal);
win = gausswin(32,2); % Fensterlänge, alpha
win = win/sum(win); % Normierung auf 1
signal_filt = conv(signal,win); % Faltung = Filterung
signal_filt = signal_filt(1:N) % Ausschwingen abschneiden
 


Ich habe mir dann signal und signal_filt im Frequenzbereich angesehen und meine Vermutung hat sich bestätigt. Ob ich die Filterung nun im Zeit- oder Frequenzbereich durchführe, ist ja egal. Oder habe ich dein Vorgehen etwa missverstanden...

Zitat:
...nach der FFT bekommst du ja die Fourierkoeffizienten über der Frequenz (oder wahrscheinlich omega). Diese Koeffizienten multiplizierst du dann mit einer Gausskurve


Wenn du hiermit eine Faltung im Frequenzraum meinst, muss die Gausskurve aber auch erstmal in den Frequenzraum transformiert werden, bevor man die Multiplikation durchführt. Man kann doch nicht einfach die Koeffizienten des Filters (Gausskurve = Impulsantwort des Filters) aus dem Zeitbereich nehmen.

Aber wie gesagt...evtl. habe ich dich auch einfach missverstanden. Ich lasse mich da gern belehren und vom Gegenteil überzeugen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2011, 11:43     Titel:
  Antworten mit Zitat      
Hi ,
im Moment kann ich erstmal garnix sagen, weil ich die Daten nicht lesen kann. Ich benutze hier scilab, daher bringt mir ein *.mat file nicht viel. Hast du den file als ASCII oder evtl. die file descritpion zum mat file?
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.