Hallo,
ich lese mit einem Arduino (durch LINX) verschiedene Wert mittels induktiven Sensors ein. Das funktioniert auch soweit. Nun möchte ich mir aber den Wert anzeigen lassen, dessen Wert am meisten gemessen wurde. Dafür hätte ich jetzt die Funktion "Modalwert (Punkt zu Punkt) genommen, wäre das korrekt?
Denn egal was ich mache, ich bekomme dabei nichts verwertbares raus. Trotz studieren der Beispiele und der LabVIEW Hilfe bekomme ich einfach nicht den Wert raus, der am meisten vorkommt.
Ich hab das ganze mit einer extra einfach programmierten VI etwas für mich anschaulich gemacht, aber entweder bekomme ich als Modalwert "NaN" heraus (gemittelte Werte möchte ich eigentlich nicht) oder er gibt mir einfach nur den letzten eingelesenen Wert aus.
Eventuell verstehe ich auch einfach nur nicht wie ich das ganze miteinander verbinden muss (oder muss ich alle Messwerte erst in ein Array schreiben?).
Hoffe mir kann jemand helfen, danke.
(LabVIEW Version 15.0)
Hallo SPM,
herzlich willkommen im Forum!
Zitat:Denn egal was ich mache, ich bekomme dabei nichts verwertbares raus.
1. Warum initialisierst du die Funktion IMMER??? Das kann nicht sinnvoll sein…
2. Warum gibst du "0" Intervalle vor, obwohl die Hilfe sagt, dass dort mindestens der Wert "1" zu stehen hat???
Ich bekomme durchaus sinnvolle Ergebnisse:
[
attachment=60715]
Ein Sinus hat die "meisten" Werte rund um ±1…
(Es gibt übrigens auch eine Mode-Funktion ohne PtByPt, die kommt zum gleichen Ergebnis…)
Ah danke, das initialisieren war der Fehler!
Ich hatte "0" als Intervall, weil ich es gestern mit der anderen Modalwert Funktion verwechselt habe. Dort kann man als Intervall laut Hilfe auch "0" eintragen und somit einen exakten Wert ausgeben lassen.
Aber sehe ich es richtig, dass ich mit der Punkt zu Punkt Funktion nicht den exakten Wert ausgeben lassen kann, sondern immer ein geschätzter Wert ausgegeben wird (also müsste ich die Messwerte erst in ein Array schreiben)?
Oder stehe ich hier auf dem Schlauch?
Hallo SPM,
Zitat:Aber sehe ich es richtig, dass ich mit der Punkt zu Punkt Funktion nicht den exakten Wert ausgeben lassen kann, sondern immer ein geschätzter Wert ausgegeben wird
Warum liest du nicht einfach die Hilfe zur Funktion?
Auszug:
Zitat:1. In diesem VI wird der Modalwert mit Hilfe eines Histogramms und nach der Formel h(Modalwert) = max[h(x)] ermittelt.
2. Das VI erzeugt ein diskretes Histogramm h(x) mit der angegeben Anzahl von Intervallen der Folge von Eingangswerten, die durch Sample-Länge festgelegt wurde. Es sucht in dem Histogramm h(x) nach dem Intervall i mit dem größten Zählerinhalt.
3. Nachdem das Intervall ermittelt ist, wird der Median des Intervalls als Modalwert der Eingangswerte ausgewählt.
(Ich habe den Absatz in drei Stichpunkte 1/2/3 erweitert.)
In 1. wird der grundlegende Ansatz erläutert.
2. erläutert das Berechnen des Histogramms.
3. sagt dir, welcher Wert
genau berechnet wird.
Die Funktion "schätzt" nicht, sondern
berechnet exakt…
Das weiß ich schon. Mit "exakten Wert" meinte ich eben, dass nicht der Median berechnet werden soll, sondern von den Eingangswerten, nur der Wert unverändert ausgegeben werden soll, der am meisten vorkommt.
Bei der anderen Funktion steht nämlich in der
Hilfe "Bei Intervallen kleiner oder gleich 0 gibt das VI nur den genauen Modalwert der Eingangsfolge aus."
Und weiter steht dort: "Bei Intervallen größer als 0 unterteilt das VI mit Hilfe eines Histogramms die Eingangsfolge X in Balken oder Intervalle und gibt den Modalwert (Instanz "Ein Modalwert") oder die Modalwerte ("Mehrere Modalwerte") des Balkens mit den meisten Werten der Eingangsfolge aus. Die
geschätzten Modalwerte eignen sich in der Regel unter Praxisbedingungen, bei denen die Eingangsfolge auch Störwerte enthält, besser als genaue Modalwerte."
Bei der Punkt für Punkt-Funktion ist ersteres ja dann anscheinend nicht möglich, wenn ich es richtig sehe?
Das war ja eben auch der Grund, warum ich fälschlicherweise beim Intervall die Zahl "0" eingegeben hatte.