LabVIEWForum.de - Mittelwerte in Graph darstellen

LabVIEWForum.de

Normale Version: Mittelwerte in Graph darstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

danke erstmal für dieses tolle Forum. Hier konnte ich als Labviewanfänger schon sehr viel nützliches beziehen.
Jetzt habe ich aber ein Problem, dessen Lösung ich trotz Suche nicht gefunden habe.

Und zwar messe ich mit einem Laser, der auf einer Lineareinheit montiert ist ein Profil und speicher die Werte in einem Array.
Wenn der Laser die eine Seite gemessen hat schwenkt er um 90° und misst die Vorderseite. Schematisch (Versatz zur besseren Darstellung) ist das ganze in dem angehängten Bild dargestellt.

[attachment=50461]

Anschließend glätte ich die Werte mit dem Smoothing Filter.

Das Problem besteht darin, dass ich hierdurch zwischen Punkt 2 und Punkt 3 eine gerade Linie erhalte. Kann mir evtl. jemand einen Hinweis geben, wie ich das Problem anzugehen habe.

Vielen Dank im Voraus.

Gruß
Dawa
Hallo Dawa,

du arbeitest anscheinend mit Rotations-Werten. Deshalb würde ich hier mit (r,theta)-Werten (statt X/Y-Positionen) arbeiten. Dann fällt die Zuordnung auf einen theta-Bereich sehr viel einfacher und man kann Werte, die bei gleichen/ähnlichen Winkeln liegen, sehr einfach herausfiltern und mitteln…

Wenn es dir nur um diese rote Linie zwischen den Teilstücken geht: ersetze diese Linie durch ein NaN, das wird beim plotten von Daten in Graphen ignoriert.
Hallo,

danke für die Antwort. Ich denke das Bild zeigte den Sachverhalt nur unzureichend. Es handelt sich hierbei nicht um ein kreisrunden Gegenstand, sondern um einen Autoreifen. (sorry, das nächste mal probiere ich es genauer)

Ich habe das ganze jetzt wie folgt gelöst. Bestimmt nicht die eleganteste Lösung, aber mit meinen bescheidenden Kenntnissen realisierbar.

[attachment=50490]

Über Punkt 2 und 3(Bild erstes Post) bilde ich den Mittelpunkt. Wenn der Laser den Reifen von der Seite vermisst, schneide ich alle Werte die nach dem Mittelpunkt kommen ab und ersetze diese durch Nullen. Danach misst er auf der Lauffläche, hier ersetze ich auch zuerst die Messergebnisse mit Nullen. Sobald der Laser den Mittelpunkt erreicht hat schreibe ich wieder die richtigen Werte in das Array. Danach lösche ich einfach alle Zeilen die eine 0 enthalten.

Die Wert in dem Array 3 und 4 sind jetzt korrekt.

Jetzt würde ich die Werte allerdings gerne glätten. Ich habe schon ein paar Filter ausgetestet. Am günstigsten erscheint mir noch der Smoothing-Filter, allerdings hängen hier die Werte teilweise stark neben den wirklich gemessenen. Außerdem sind die ersten 10 Messergebnisse unbrauchbar, da dieser Filter anscheinend bei 0 startet und sich von dort aus den Werten annähert.

Gibt es hier eine elegantere Lösung?

Gruß
Dawa
Hallo Dawa,

Zitat:Gibt es hier eine elegantere Lösung?
Auf alle Fälle, wenn man diese ganzen lokalen Variablen erblickt…
Warum schreibst du erst Nullen in die Arrays, um sie dann hinterher herauszulöschen? Warum nicht gleich weglassen?

Zur Frage: Wie wäre es dann mal mit Beispieldaten? Und nicht nur einem Bild, sondern einem VI?
Offtopic2
(20.08.2014 15:49 )GerdW schrieb: [ -> ]Auf alle Fälle, wenn man diese ganzen lokalen Variablen erblickt…
Lokale Variablen? Globale Variablen!

Gruß, Jens
Hallo,

Zitat:Auf alle Fälle, wenn man diese ganzen lokalen Variablen erblickt…
Zitat:Lokale Variablen? Globale Variablen!
Fand ich jetzt nicht störend. Ergeben sich aus globalen Variablen Nachteile?

Zitat:Warum schreibst du erst Nullen in die Arrays, um sie dann hinterher herauszulöschen? Warum nicht gleich weglassen?
Weil ich nicht herausgefunden habe, wie man das Autoindexing pausiert/aussetzt. Danach habe ich erst die Shift-Register entdeckt/halbwegs verstanden. Ich denke hiermit wäre es möglich gewesen.

Zitat:Wie wäre es dann mal mit Beispieldaten? Und nicht nur einem Bild, sondern einem VI?
Ich bau den Programmteil morgen aus dem Programm aus und stell ihn hier rein.

Danke für die Hilfe.

Gruß
Dawa
Referenz-URLs