INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

(diskrete, diskontinuierliche) Messkurve differenzieren



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

14.06.2009, 23:37
Beitrag #1

Malte84 Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: May 2009

8.5
2008
de

45897
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Hallo,

es müsste ein absolutes Standard-Problem der Messtechnik sein, ich finde aber die Lösung nicht:

Wie differenziere ich eine Messkurve, die aus diskreten Werten besteht? Speziell geht es hier um ein Zeit-Signal eines Geschwindigkeitssensors, dessen Messgröße elektr. Spannung ist. Aus der Geschwindigkeit möchte ich die Beschleunigung berechnen.

An jedem Messpunkt gibt es ja zwei Tangenten, daher ist eine eindeutige Differentiation nicht möglich. Wie wird das gelöst? Einfach jeweils den Mittelwert aus den beiden Steigungen nehmen?

Hat LabVIEW vielleicht schon eine spezielle Lösung für das Problem und ich übersehe sie nur?

Grüße

Malte
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.06.2009, 07:33 (Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2009 07:42 von Lucki.)
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Ab "Full Development System" gibt es die Funktion "Ableitung x(t)". Die Dir vorschwebende Idealösung gibt es nlcht. Statt desen muß man sich für eine von 4 Differentiatiosmethoden entscheiden. In der Hilfe sind diese ausführlich beschrieben.
Allen Methoden gemeinsam ist, daß nach Anfangs- und/oder Endbedingungen verlangt wird. Bei Differenzierung einer echten mathematischen Funktion braucht man ja so einen Wert nicht.
Die Methoden sind:[list]
[*]2. Ordnung (Zentral)<>
[*]4. Ordnung (Zentral)<>
[*]Vorwärts<>
[*]Rückwärts<>
[st]Schau Du mal alles in Ruhe an, und bei Fragen melde Dich wieder.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.06.2009, 13:01 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2009 13:02 von Malte84.)
Beitrag #3

Malte84 Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: May 2009

8.5
2008
de

45897
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Hallo Lucki,

danke für den Tipp. Das scheint genau das zu sein, was ich brauche.
Dass es die perfekte Lösung nicht gibt, dachte ich mir schon. Meine Überlegungen waren bisher: Entweder vorher die Kurve interpolieren, so dass eine stetig differenzierbare Funktion herauskommt, oder eben Mittelwertbildung(en). Letzteres tut genau "Ableitung x(t)". Sogar mit verschiedenen Methoden, die tatsächlich in der Hilfe gut beschrieben sind.

Soweit, so gut.
Was ich nicht verstehe, ist die Sache mit den Anfangs- und Endbedingungen. Wofür brauche ich die denn nun genau, bzw. wie verwende ich sie?

Außerdem habe ich noch das Problem, dass ich jetzt den Ausgang (dX/dt) nicht einfach an den Graf anschließen kann. Es erscheint die im Anhang beigefügte Meldung. Sowohl Datenquelle als auch -senke sind irgendwie 1-D Array DBL. Scheinbar aber doch was anderes...

Danke schonmal bis hierher.

Malte


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.06.2009, 14:01
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
' schrieb:Was ich nicht verstehe, ist die Sache mit den Anfangs- und Endbedingungen. Wofür brauche ich die denn nun genau, bzw. wie verwende ich sie?
Habe schon zu viele Zeit im Forum verplempert, deshalb erst mal kurze Antwort darauf:
Z.B Differenzieren Vorwärts: Es werden alle benachbarten Differenzen genommen. Das Resultat wäre ein Array mit einem Element weniger als der nicht differenzierte Array. Ni hat sich aber vorgenommen, daß bei allen 4 Methoden die Anzahl der Element nach Differentiation gleich bleiben soll, und schreit deshalb nach (einem) zusätzlichen Anfangselement(en). (Bei Methoden 1,2 sind es mehrere Anfangs/Endelemente)
Wenn man diese zusätzliche(n) Element(e) nicht hat, dann muß man sie eben vom Anfang und Ende des Arrays vor der Differentiation abtrennen, um sie als solche zu verwenden. Die differenzierte Restfunktion hat dann aber weniger Elemente als die Originalfunktion und muß in ihrem t0 gegebenenfalls verschoben werden, damit es keine Zeitverscheibung gegenüber der Originalfunktion gibt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.06.2009, 10:35
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Führe hier npch mal diese verschiedenen Differenzierungen vor. Man sieht, daß mit der Methode 4. Ordnung (Zentral) eine Polynomkurve dritter Ordnung fehlerfrei differenziert wird. Bei den anderen Methoden ist das nicht der Fall. Allerdings muß man bei dieser Methode von der Originalkurve 2 Anfangs- und 2 Endpunkte wegnehmen, da man diese für die Anfangs/Endbedingungen braucht.
In der Praxis ist aber die Methode 4.Ordnung nur wichtig, wenn man bei einer Datenreihe im Bereich weniger Punkte große Krümmungen hat. Man verringert damit systematische Fehler im Krümmungsbereich.

Lv86_img
Sonstige .vi  Differenzieren.vi (Größe: 15,89 KB / Downloads: 605)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2009, 09:32
Beitrag #6

Malte84 Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: May 2009

8.5
2008
de

45897
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Hallo Lucki,

vielen Dank für deine Zeit. Leider habe ich nicht die neueste LabVIEW-Version, so dass ich mir dein Beispiel nicht ansehen kann.

Kannst du es nochmal als 8.5-Version speichern? Wäre super!

Gruß

Malte
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.06.2009, 09:36
Beitrag #7

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Made by Lucki:

Lv85_img
Sonstige .vi  Differenzieren.vi (Größe: 30,13 KB / Downloads: 453)


LG
Torsten

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2009, 12:54
Beitrag #8

Malte84 Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: May 2009

8.5
2008
de

45897
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Ah perfekt! Eine übersichtlichere Darstellung zum Nachvollziehen der Methoden kann ich mir kaum vorstellen. Echt super... Danke! Das werde ich mir jetzt erstmal in Ruhe angucken.

Allerdings gibts immer noch das Problem mit dem Anschluss des Graphen:
Ich benutze einen Signalverlaufsgraph. Kann ich etwa nur einen XY-Graphen verwenden, wenn ich "Ableitung (x)" benutze? Wenn ja, wieso? Das dt ist doch immer noch konstant...?

Gruß

Malte
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2009, 14:24
Beitrag #9

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
' schrieb:Allerdings gibts immer noch das Problem mit dem Anschluss des Graphen:
Ich benutze einen Signalverlaufsgraph. Kann ich etwa nur einen XY-Graphen verwenden, wenn ich "Ableitung (x)" benutze? Wenn ja, wieso? Das dt ist doch immer noch konstant...?
Du hast ja recht, und wenn Du genau hingeguckt hättest, hättest Du bemerken müssen, daß ich XY-Graphen gar nicht verwendet habe.
Man sieht es ja schon auf den ersten Blick: XY-Graphen benötigen 2 Arrays als Eingänge (Oder wahlweise ein Array, bestehend aus [X.Y]- Datenpunkt-Clustern. Hier im Beispielwird nur das Y-Array eingegeben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.07.2009, 12:06 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2009 12:10 von Malte84.)
Beitrag #10

Malte84 Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: May 2009

8.5
2008
de

45897
Deutschland
(diskrete, diskontinuierliche) Messkurve differenzieren
Hallo.

Lucki schrieb:wenn Du genau hingeguckt hättest, hättest Du bemerken müssen, daß ich XY-Graphen gar nicht verwendet habe.
Da hast du natürlich Recht Rolleyes

Ich würde jetzt gerne, wie in Deinem Beispiel, den Signalverlaufsgraph mittels eines Clusters "füttern". Das ist ja eigentlich ganz einfach, die LabVIEW-Hilfe sagt:
Zitat:Der Graph akzeptiert außerdem einen Cluster mit einem x-Anfangswert, einem Dx-Wert und einem Array von Y-Daten.

Bei mir ist allerdings die Sache: Ich habe einen einzigen Signalverlaufsgraphen für 3 verschiedene Cases in einer Casestruktur und bei einem Case kommen die Daten direkt aus dem "DAQmx - Lesen" (da soll direkt das Geschwindigkeitssignal in den Graph gezeichnet werden, ohne irgendeine Umrechnung). Wenn mein Signalverlaufsgraph aber jetzt auf Cluster eingestellt ist, muss ja auch aus diesem Case der x-Anfangswert, der Dx-Wert und das Y-Array getrennt ankommen.
Die Frage lautet also: Wie bekomme ich aus der Daten-Leitung des "DAQmx - Lesen" die y-Werte extrahiert? Finde dazu nichts in der Hilfe...

Die Differenzierungs-Methoden habe ich inzwischen mathematisch nachvollzogen. Ich denke für meine Anwendung ist die Methode 4. Ordnung (zentral) die geeignetste. Denn bei kleiner Abtastfrequenz können ja sehr starke Krümmungen auftreten.

Naja, nochmals vielen Dank!

Edit:
Achso und wie kann ich eigentlich im Nachhinein den Signalverlaufsgraph so umstellen, dass er mit einem anderen Datentyp arbeitet?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: