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

Nulldurchgänge von Messdaten detektieren

 

jack_24
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 21:39     Titel: Nulldurchgänge von Messdaten detektieren
  Antworten mit Zitat      
hallo an alle,

ich suche eine Routine, die mir die Nulldurchläufe eines Massdatensatzes angibt. Es liegen die reinen Samples vor. Ein Fitting ist nicht geeignet, weil nicht nur reine Sinuskurven vorliegen.
Ein weiteres Problem ist, dass es vorkommen kann, dass es kleine Sprünge in die gerade entgegengesetzte Richtung an den Vorzeichenwecheln geben kann. hier mal ein Beispiel. Dabei sollte dann aber nur eine Nullstelle herauskommen.
Beisp.:
Code:

0,0186000007256866
0,0180000007018447
0,0174000006780028
0,0162000006303191
0,0144000005587935
0,0138000005349517
0,0126000004872680
0,0102000003919005
0,00960000036805868
0,00900000034421682
0,00720000027269125
0,00540000020116568
0,00420000015348196
0,00300000010579824
0,00180000005811453
0,00120000003427267
-1,34110456030331e-11
0,000001384029024300
-0,00300000013262034
-0,00480000020414591
-0,00600000025182963
-0,00720000029951334
-0,00780000032335520
-0,00960000039488077
-0,0108000004425645
-0,0120000004902482
-0,0132000005379319
-0,0138000005617738
-0,0138000005617738
-0,0162000006571412
 

für das bsp müsste ungefähr 17...18 rauskommen.
was mir spontan einfällt ist eine Filterung vorzunehmen und dann interpolieren. Aber ich würde es gern etwas schneller und unkomplizierter haben, hätte jemand eine Idee. wäre sehr dankbar dafür.
beste grüße und danke an alle Antwortenden

Zuletzt bearbeitet von jack_24 am 11.01.2010, 22:08, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


brunowe
Forum-Anfänger

Forum-Anfänger



Beiträge: 40
Anmeldedatum: 15.08.09
Wohnort: Augsburg
Version: R2008a
     Beitrag Verfasst am: 11.01.2010, 22:00     Titel:
  Antworten mit Zitat      
Hallo,

also wenn es nur einen echten Nulldurchgang gibt, dann könntest du einfach das Minimum der Absolutwerte suchen, ist natürlich nicht sehr fehlerresistent (Rauschen etc), dafür aber unschlagbar schnell.

Gruß, brunowe
Private Nachricht senden Benutzer-Profile anzeigen
 
jack_24
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 22:12     Titel:
  Antworten mit Zitat      
naja sie sollen ja die interpolierten nullstellen rauskommen.
Code:

hier müsste z.b. also 2.3333333 herauskommen.
außerdem würden eben in solchen fällen mehr als ein Minima entstehen.
ich hab die "Extremfälle" mal gefittet und diese variante fällt aus, das sie zu zeitaufwendig ist und selbst bei 8 Stufe noch mangelhafte Ergebnisse liefert.
bin also auf Hilfe hier angewiesen. ...
Grüße Jack
Private Nachricht senden Benutzer-Profile anzeigen
 
ste99947

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2010, 13:30     Titel:
  Antworten mit Zitat      
Hallo Jack,
wie du genau glättest und interpolierst hängt natürlich von deinen Daten ab. Mein Vorschlag wäre das hier:
1. Daten in sinnvoller Auflösung interpolieren und glätten. z.B. mit LOWESS-Filter. Gibt es in der curve-fitting Toolbox oder z.B. in der dataviz toolbox hier: http://www.datatool.com/prod02.htm
2. Vorzeichenwechsel suchen.
mit der toolbox im pfad:
Code:

y=[0.0186000007256866 0.0180000007018447 0.0174000006780028 0.0162000006303191 0.0144000005587935 0.0138000005349517 0.0126000004872680 0.0102000003919005 0.00960000036805868 0.00900000034421682 0.00720000027269125 0.00540000020116568 0.00420000015348196 0.00300000010579824 0.00180000005811453 0.00120000003427267 -1.34110456030331e-11 0.000001384029024300 -0.00300000013262034 -0.00480000020414591 -0.00600000025182963 -0.00720000029951334 -0.00780000032335520 -0.00960000039488077 -0.0108000004425645 -0.0120000004902482 -0.0132000005379319 -0.0138000005617738 -0.0138000005617738 -0.0162000006571412]';
x=[1:30];
newx=[1:0.1:30];
newy=loess([1:30],y',[1:0.1:30],0.2,1);
s=sign(newy);
index=find(s(1:end-1)-s(2:end));
nullstelle=(newx(index+newx(index+1))/2
 


Grüße
Stephan
 
Signaly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2010, 07:29     Titel: Filterung ungeeignet
  Antworten mit Zitat      
Hallo,

mit einer Filterung wird man den Effekt vom Rumzappeln um den Nulldurchgang nicht eliminieren. Die Amplituden werden halt ein bisschen kleiner.

Nulldurchgänge sollte man derart ermitteln, daß
a) Hysterese-Funktionen verwendet werden. Hier wird das "Prellen" am effektivsten vermieden. Leider hat man einen Hysteresewert zu definieren, der je nach Messdaten individuell angepasst werden muss.

b) Positionen der Nulldurchgänge zunächst bestimmt werden. Sollten Nulldurchgänge mit einer Indexdifferenz von 2 .. N vorliegen, können diese zusammengefasst werden (Median, gewichtete Mitteling, Min-Max-Differenz etc.)

Die Methode b ist die universellste. Amplitudenabhängigkeiten treten nicht auf und verschiedenste Messdtaenreihen können analysiert werden.

MfG
Andreas
 
jack_24
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2010, 23:31     Titel:
  Antworten mit Zitat      
kannst du darauf näher eingehen. ich habe in diesem zusammenhang davon noch nie was gehört. gibts da konkrete funktionen und wann ja welche?
besten danke aber für die antwort andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2011, 09:36     Titel:
  Antworten mit Zitat      
Hallo

Ist bei diesem Theme schon eine Lösung gefunden worden?
Würde es auch benötigen!?
Danke.

FG
 
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.