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

Messung mit rauschen. zeit nicht äquidistant.sgolay?

 

xPashAx
Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 09.04.2010, 13:20     Titel: Messung mit rauschen. zeit nicht äquidistant.sgolay?
  Antworten mit Zitat      
hallo leute,
hab ne messung mit rauschen, aber die zeitachse ist nicht äquadistant.
wenns äquadistant gewesen wäre wie im help
Code:
smtlb = sgolayfilt(werte,3,41); % Apply 3rd-order filter
subplot(2,1,1)
plot(t,werte(1:numel(werte)));
title('Mit Rauschen'); grid;
subplot(2,1,2)
plot(t,smtlb(1:numel(werte)));
title('gefiltert'); grid
 

wie kann ich jetzt vorgehen. kann ich das trotzdem sgolay in einer anderen form anwenden?

danke
Private Nachricht senden Benutzer-Profile anzeigen


xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 11.04.2010, 18:09     Titel:
  Antworten mit Zitat      
Sad hat niemand einen vorschlag
Private Nachricht senden Benutzer-Profile anzeigen
 
jack_24
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 19:14     Titel:
  Antworten mit Zitat      
du musst mal ne konkrete frage bilden. was ist dein ziel?
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 11.04.2010, 20:03     Titel:
  Antworten mit Zitat      
also ich hab ne beschleunigun-zeit kennlinie aber mitm rauschen.um damit arbeiten zu können muss ich das rauschen filtern. nur das problem ist das die zeit nicht äquidistant ist. zb 0ms 202ms, 450ms, 600ms usw.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 20:31     Titel:
  Antworten mit Zitat      
Du könntest ein einfaches PT1-Filter programmieren, das funktioniert auch mit variablen Schrittweiten:
Code:

zeitkonstante = 0.010; %z.B. 10ms
output = zeros(size(messung));
output(1) = 0; %Anfangswert des Filters, bei einer halbwegs konstanten Messung kannst Du hier direkt den Mittelwert eintragen, dann hast du auch im Zeitbereich  bis 3...5*Zeitkonstante schon brauchbare Werte
for iCount = 2:length(messung)
    schrittweite = zeitvektor(iCount) - zeitvektor(iCount - 1);
    T_Stern = schrittweite / zeitkonstante;
    output(iCount) = T_Stern * messung(iCount-1) + (1-T_Stern)*output(iCount-1);
end
 


Ich hoffe, ich bin jetzt nicht um eins verschoben, aber das bekommste dann schon raus.
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 11.04.2010, 20:35     Titel:
  Antworten mit Zitat      
sorry ne dumme frage da ich neu bin.
das würde meine messung filtern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 20:44     Titel:
  Antworten mit Zitat      
Ja, filtern würde es Deine Messung. Falls Du irgendwelche speziellen Anforderungen an die Filterung hast, werden die womöglich nicht erfüllt, aber die Messungen werden gefiltert.

Falls Du mit Regelungstechnik was anfangen kannst: http://de.wikipedia.org/wiki/PT1-Glied

Im Prinzip werden alle Frequenzen, die über f_grenz = 1/(T*2*pi) ([Hz]) liegen mindestens auf die halbe Amplitude runtergedämpft. Je höher die Frequenzen, desto stärker werden sie gedämpft. Dabei sind hohe Frequenzen mit schnellen Änderungen im Signal gleichzusetzen (z.B. sprunghafte Änderungen).

Die Grenzfrequenz musst Du deutlich unter die Frequenz deines Nutzsignals legen, da Du sonst dein Nutzsignal zu sehr verschleifst. Einerseits stimmt dann die Amplitude nicht mehr und andererseits bewirkt das Filter eine Zeitverzögerung (daher der Name "Verzögerungsglied"). Das kann sehr unangenehme Folgen haben.

Am besten einfach ein bisschen damit rumspielen und das gefilterte und ungefilterte Signal in ein Achsensystem plotten (-> hold on) und angucken, ob das noch brauchbar ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 11.04.2010, 20:52     Titel:
  Antworten mit Zitat      
wäre es nicht möglich erstmal sgolay anzuwenden, als wäre es äquidistant.danach den zeitvektor (die nicht äquidistant ist) zuordnen.
Sollte man das lieber vermeiden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 21:18     Titel:
  Antworten mit Zitat      
Die Zeit wird da ja nicht aus langeweile berücksichtigt. Letztendlich sagt ja die Zeit aus, ob eine Änderung schnell oder langsam stattfindet:

Code:

daten1 = [0, 0, 0, 1, 1, 1]; %Datenvektor mit Sprungfunktion
zeit1 = [0, 1, 2, 3, 4, 5]; %Sprung innerhalb von einer Sekunde

daten2 = [0, 0, 0, 1, 1, 1];
zeit2 = [0, 1, 2, 10, 11, 12]; %Sprung innerhalb von 8 Sekunden
 

Die Daten sind in beiden Fällen die selben, nur die Zeitvektoren unterscheiden sich. Im ersten Fall ist die Änderung des Signals relativ schnell (1s), im zweiten Fall (selber Datenvektor) aber sehr langsam (8s). Dein Filter würde aber keinen Unterschied machen.

Mit falscher Zeit-Information (z.B. konstante Abtastzeit) tut das Filter zwar etwas, aber nicht so 100% das richtige. Wenn die Zeitabstände im Zeitvektor sich nur sehr wenig voneinander unterscheiden, ist es nicht so dramatisch, wenn aber Faktor 10 zwischen den verschiedenen Zeitschritten liegt, wird das Ergebnis eher Murks sein.

Wenn Du unbedingt einen digitalen Filter aus Matlab auf deine Daten werden willst, könntest Du die Daten auch per Interpolation so aufbereiten, dass sie mit konstanter Abtastzeit vorliegen. Aber so ganz hübsch ist das auch nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
jack_24
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 22:18     Titel:
  Antworten mit Zitat      
wie wäre es denn deine werte zu averagen. d.h. deinen Beschleunigungsvektor in sagen wir 1s Abschnitte zu unterteilen und den Mittelwert (mean) dieser Teilstücke zu bilden.

2. Variante: Du bildest die Fourierkoeffizienten, schneidest die letzen alle raus und transformierst zurück

3. Variante, die mir noch einfällt: wenn die Kurve einem Muster (einer Funktion) folgt, kannst du die Kurve auch mittels einer Modelfunktion fitten.

PS.: vielleicht ist es noch hilfreich zu wissen, was du mit diesen Datensätzen vorhast.

beste grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 12.04.2010, 08:32     Titel:
  Antworten mit Zitat      
ich will zB meine a_max herausfinden in welchen zeitintervall es vorkommt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2010, 09:04     Titel:
  Antworten mit Zitat      
jack_24 hat Folgendes geschrieben:
2. Variante: Du bildest die Fourierkoeffizienten, schneidest die letzen alle raus und transformierst zurück


Auch dafür müsste die Messreihe erstmal so aufbereitet werden, dass die Messungen in konstanten Zeitschritten vorliegen. Dann kann man auch gleich filtern...
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 12.04.2010, 09:34     Titel:
  Antworten mit Zitat      
Würde sowas in ordnung sein :
Beschleunigungsvektor a
Zeit (nicht äquidistant) t

mein zeitvektor in 0.2ms zeitschritten t_neu

Code:
ts=timeseries(a,t)
ts=transpose(ts)
res_ts=resample(ts,t_neu)
Beschleunigung=res_ts.data'  % jetzt hab ich doch meine beschleunigung in konstanten Zeitschritten
gefiltert_Beschleunigung = sgolayfilt(Beschleunigung,3,41);

ts_1=timeseries(gefiltert_Beschleunigung,t_neu)
ts_1=transpose(ts_1)
res_ts1=resample(t_neu,t)
Beschleunigung1=res_ts1.data'; % jetzt habe ich doch die gefilterte Beschleunigung mit NICHT äqudistanten Zeitintervall./code

geht sowas oder war das nur ne blöde erfindung von mir Razz
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 12.04.2010, 21:29     Titel:
  Antworten mit Zitat      
habs mitm filtern immer noch net geschafft Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2010, 21:43     Titel:
  Antworten mit Zitat      
Wenn ich das richtig sehe, dann nimmt resample auch 3 Argumente entgegen - Du hast nur 2 übergeben. Läuft der Code denn so, wie Du ihn gepostet hast? Falls ja: was läuft denn falsch?
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 - 2025 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.