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!
' schrieb:Der Teil zur Nulldurchganserkennung arbeitet doch mit einem normalen DBL-Array, so wie du es wohl in deinem VI hast. Dt kennst du doch: 10kHz.
Einfach alles langsam durchgehen und du verstehst alles.
Garnicht. Bei dem Beispiel ist doch schon eine Simulation drin. Vielleicht arbeitest du einfach mit dem Beispiel weiter...
Was hält dich auf?
BTW wie geht's dann weiter? Was machst du mit den ganzen T's? (T:Periodendauer)
Ja der Teil mit der 0 Durchgangserkennung ist klar. Vielleicht stehe ich grade total auf dem Schlauch, aber wo interpolierst du das Signal am 0 Durchgang?
Mich hält der Satz auf dem Deckblatt der Norm auf "Vervielfältigung - auch für innerbetriebliche Zwecke - nicht gestattet".
Soweit ich weiß darf man nicht einfach Ausschnitte aus den Normen veröffentlichen, deshalb findet man sie auch nirgendwo im Internet.
Die Periodendauern werden für eine Fourierkoeffizietenberechnung verwendet.
' schrieb:Ja der Teil mit der 0 Durchgangserkennung ist klar. Vielleicht stehe ich grade total auf dem Schlauch, aber wo interpolierst du das Signal am 0 Durchgang?
Ups!
Ich hatte erst eine Version wo interpoliert wurde, die ich dann ohne nachzudenken verworfen habe ... du hast recht der Teil fehlt.
Wird nachgereicht.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
21.07.2010, 14:35 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2010 15:37 von jg.)
Auch auf die Gefahr hin für meinen momentanen Programmierstil in der Luft zerrissen zu werden lade ich jetzt doch mal hoch, was ich im Moment habe und wo ich im Moment nicht weiterkomme.
Sorry, dass es so unübersichtlich aussieht, aber ich schaffe es nicht beim ausprobieren Ordnung zu halten.
Ich hoffe, dass es alle Vis sind, die man braucht.
Wenn man das Rauschen aktiviert sieht man schon, dass die interpolierten 0 Durchgänge viel näher an der 0 sind, als die normal erkannten. (ich erkenne mit absicht nur die 0 Durchgänge von - nach + weil ich so sehr einfach sagen kann, wann eine Periode abgelaufen ist).
Das Problem ist, dass ich es nicht schaffe den gebrochenen Index zu berechnen. Sprich ich habe neue 0 Durchgänge kann aber nicht sagen an welcher Position sie in meinem Ausgangsarray sind und kann so folglich auch nicht sagen wieviel Zeit vergangen ist von 0 Durchgang zu 0 Durchgang (die Zeitdaten stehen im Ausgangsarray). Daher wollte ich mir einen gebrochenen index erstellen.
Nur so als Idee... hab damit keine Perioden mit ~0s Dauer
Die Frequenzfreaks dürfen das aber gerne in der Luft zerreissen... ^_^
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
22.07.2010, 08:23 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2010 08:25 von dimitri84.)
@SeBa
Es wird in deinem VI interpoliert, richtig, aber leider nicht so wie emkay das wollte. Deine Interpolation ist nichts anderes als ein Tiefpass. Du interpoliersts über den gesamten Block. emkay wollte, dass genau (und nur) bei der Null (x-Achse) interpoliert wird. Nichtdestotrotz wird das verauschte Signal so natürlich besser nutzbar für diese Nulldurchgangsmethode.
So wie Emkay das will, geht wohl mit diesem VI: Schwellwert 1-d Array. Hab' grad aber gemerkt, dass das 'ne ziemliche Fummelei ist auf die ich doch keine Lust habe ... sry.
Die einzige praktikable Variante (finde ich), ist die von Lucki's erstem Post.
' schrieb:Natürlich könnte man durch Interpolation den Fehler von aktuell 0,25Hz entscheidend verringern, nur ist das Programm dann aufwendiger als die folgende supereinfache Methode:
Auf den Array die Funktion "rationales Neuabtasten" anwenden. Bei Upsamling werden Zwischenwerte interpoliert, bei Faktor 100 hätte das Array denn pro Periode 20000 Werte statt 200, der Fehler würde sich um Faktor 100 auf 0.0025 Hz verringern. Das VI bietet übrigens auch die Möglichkeite, Glättungfilter zu verwenden - wichtig bei Messwerten aus der realen Außenwelt.
(Der Memory-Verbrauch ließe sich durch stückweises Analysieren des Arrays beliebig verringern)
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
' schrieb:emkay wollte, dass genau (und nur) bei der Null (x-Achse) interpoliert wird.
Ok, ich hab auch nicht wirklich versucht das Vorgehen nachzuvollziehen. Gut das du so aufpasst
Aber...
ich dachte das Problem ist, dass durch das verrauschte Signal Nulldurchgänge entstehen, die es eigentlich nicht geben sollte. Wenn das ideale Signal seinen Nulldurchgang hat, kann das verrauschte Signal davor und dahinter durch das Rauschen weitere Nulldurchgänge erzeugen.
Oder ist das egal?
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Anzeige
22.07.2010, 08:46 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2010 10:07 von dimitri84.)
Nein, sicher ist das nicht egal. Eine Glättung ist auch indiziert (vor der eigentlichen Interpolation)
' schrieb:Nichtdestotrotz wird das verauschte Signal so natürlich besser nutzbar für diese Nulldurchgangsmethode.
Das Ergebnis wird sicher besser aber df wird nicht kleiner.
Ich find's auch 'ne gelungene Lösung, wobei vielleicht ein einfacher Butterworth Tiefpass performanter und durch die Grenzfrequenz besser regulierbar (als durch diesen smoothness Wert) ist.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
' schrieb:Ich find's auch 'ne gelungene Lösung, wobei vielleicht ein einfacher Butterworth Tiefass performanter und durch die Grenzfrequenz besser regulierbar (als durch diesen smoothness Wert) ist.
Der einzige Filter den ich wirklich benutze... steht in der Küche und kommt von Britta
Ich hab ja erst nach Wavelet Transformation gesucht, aber nur weil ich das mit Origin schon mal auf ein verrauschtes Signal angewand hatte... WT gibts aber nur im Advanced Signalprocessing Toolkit... das ich nicht hab
Cubic Spline war das Nächste was mir so eingefallen ist... und ich bin ja auch eher der experimentelle Typ... einfach mal schaun was so geht.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' schrieb:So wie Emkay das will, geht wohl mit diesem VI: Schwellwert 1-d Array. Hab' grad aber gemerkt, dass das 'ne ziemliche Fummelei ist auf die ich doch keine Lust habe ... sry.
Fummelei ist geschmeichelt. Das ist die absolute Kotzerei
Ich werde heute noch einmal versuchen den ersten und "einfachsten" Ansatz zu verfolgen.
Die 0_DurchgangsVI von Labview verwenden, dann mit dem Wert vor dem 0 Durchgang und dem Wert nach dem 0 Durchgang eine Grade berechnen und den X-Achsenschnittpunkt ausrechnen. Bei 50Hz sollte der Sinus direkt am 0 Durchgang ja ech fast linear sein.
Ich hatte das ganz am Anfang programmiert, bevor ich die Frage hier gestellt hatte, aber bekam nur Murks raus. Vielleicht hatte ich einen simplen Fehler.
Wunderbar, ich hatte wohl einen simplen Fehler bei meinem ersten Ansatz gemacht. Mittlerweile funktioniert die lineare Interpolation einwandfrei.
Einen Butterworthfilter habe ich auch schonmal eingebaut, falls das widererwarten zu verrauscht sein sollte. Den Rest (eventueller Offset) schaue ich mir an, wenn das Equipment endlich installiert ist.