Verfasst am: 19.12.2012, 11:56
Titel: Filterung von Matrixdaten
Hallo erstmal,
also ich habe eine 1xX Matrix die geplottet ein starkverrauschtes Signal ausspuckt.
Ich möchte gerne das Signal filtern.
Die Matrix wird über eine A/D Karte gefüttert somit habe ich nur einzelne Werte und keine Funktion oder ähnliches.
im anhang ist das signal das ich filtern möchte dargestellt.
Das Signal ist generell sehr schwach und ist beeits vorher schon um 100dB verstärkt
Der plot ansich wird folgendermaßen aufgrufen:
Code:
figure;
subplot(2,1,2) plot(t, Dat_Ch0, 'b', t, Dat_Ch1, 'g');
axis([3000600002500]);
grid on;
title('Zoom auf die Aufnahme der Sonde');
subplot(2,1,1) plot(t, Dat_Ch0, 'b', t, Dat_Ch1, 'g');
axis([01600002000]);
grid on;
title('Gesamte Aufnahme');
Verfasst am: 19.12.2012, 17:01
Titel: Re: Filterung von Matrixdaten
Hallo GAST987654321,
Ein digitaler Filter wird dieses Signal zuverlässig glätten. Allerdings solltest Du die Physikalische Natur des Rauschens kennen, um wissenschaftlich begründbar sinnvolle Filter-Parameter bestimmen zu können. Wenn Du z.B. das Frequenz-Spektrum des Rauschens kennst und es sich vom Spektrum des gesuchten Signals unterscheidet, könnte ein Hoch/Tief/Stop oder Bandpass Butterworth-Filter optimal sein, wobei noch der Filter-Grad zu bestimmen wäre. Falls die Spektren nah beieinander liegen, würde ein Filtern aber auch die Peaks des Signals drastisch glätten. Dann könnte ein Savitzky-Golay-Filter hilfreicher sein.
Da beim Filtern von Laien sehr viele Fehler gemacht werden, solltest Du unbedingt einen ausgebildeten Signal-Processing-Profi fragen. Ich habe schon eine Doktor-Arbeit gesehen, bei der zunächst alle Frequenzen, die niedriger als eine gesuchte Frequenz waren, zunächst per Hardware im Messsystem ausgefiltert wurden. Danach wurden von der Software die höheren Frequenzen ausgefiltert. Und schließlich gab es einen Peak beim gesuchten Signal - wie erstaunlich!
Gruß, Jan
Gast987654321
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.12.2012, 08:20
Titel: frage
also als datensatz liegt mie eine matrix 1xX vor bzw ein vector ..
wie filter ich den denn dann?
also wie sieht der code dazu aus.. alles was ich gefunden habe bezieht sich auf funktionen.
ich wollte einen tiefpass filter nutzen, wenn das nicht gut ist wollte ich andere filter nutzen. aber ich brauche erstmal code die filterart ist dann ja relativ.
diese Dokus habe ich bereits gelesen, sonst würde ich hier ja nicht nachfragen.
Bei der Benutzung von filter erhalte ich folgende Fehlermeldung:
Zitat:
??? Undefined function or method 'filter' for input arguments of type 'int16'.
Error in ==> rec_std_single at 215
y=filter(b,a,Dat_Ch0)
Einstellungen und Berechtigungen
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
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.