Hallo,
ich lese eine Reihe von Werten ein, welche positiv als auch negativ sein
können. Das Vorzeichen kann sich auch im Betrieb ändern. Nun kommt es
allerdings vor, dass in Situationen in denen definitiv ein positiver
Wert kommen müsste, ein oder mehrere negative Werte eingelesen werden.
Um diese herauszufiltern speichere ich mir die Werte (falls ungleich 0)
in einem FIFO von n (n = ungerade) Werten. Als "Arbeitswert" nehme ich
immer den Mittleren. Um nun zu gucken, welches Vorzeichen nun "gültig"
ist zähle ich die positiven und die negativen Werte im FIFO. Sind mehr
positive als negative und ist der "Arbeitswert" negativ, so
interpretiere ich diesen als ungültig und setze ihn 0. In der anderen
Richtung genauso. Falls mehr negative als positive Werte im FIFO stehen
und der "Arbeitswert" positiv ist, so wird er genullt.
Fällt jemanden etwas sinnvolleres/effektiveres/genaueres ein um diesem
Problem entgegen zu wirken?
> Fällt jemanden etwas sinnvolleres/effektiveres/genaueres ein um diesem> Problem entgegen zu wirken?
Ja, die eigentliche Fehlerursache suchen/finden/beheben. Immer dieses
Gefrickel.
>Nun kommt es>allerdings vor, dass in Situationen in denen definitiv ein positiver>Wert kommen müsste, ein oder mehrere negative Werte eingelesen werden.
Dann finde heraus WARUM da negative Werte kommen;)
Am einfachsten ohne weitere Prüfung alle Werte auf 0 setzten. Dann
kannst du dir auch gleich das Einlesen sparen ;-)
Ernsthaft, aus deiner Beschreibung bin ich nicht schlau geworden.
Ob du alleine aus der Anzahl der bisher angekommenen positiven und
negativen Werte die Gültigleit neu angekommener Werte ableiten kannst,
kann dir hier niemand sagen.
Problematisch wird dein Vorgehen auf jeden Fall, wenn schon fehlerhafte
Werte erkannt und auf 0 gesetzt wurden. Dann stimmt deine vorhandene
Vorzeichenanzahl nicht mehr mit dem, was eigentlich sein sollte,
überein.
Oliver
Tom schrieb:
> Ja, die eigentliche Fehlerursache suchen/finden/beheben.
holger schrieb:
> Dann finde heraus WARUM da negative Werte kommen;)
Dazu müsste ich ein Gerät aufbrechen und das Innere analysieren und
herausfinden wie genau die Verarbeitung dort stattfindet und gucken ob
ich mich dort irgendwo einklinken kann um den Fehler von vorne herein zu
umgehen. Mit anderen Worten: Ich habe keinen Einfluss auf die Erzeugung
der Werte. Ich muss mit diesen Werten leben.
Oliver schrieb:
> Ob du alleine aus der Anzahl der bisher angekommenen positiven und> negativen Werte die Gültigleit neu angekommener Werte ableiten kannst,> kann dir hier niemand sagen.
Das sehe ich auch so. Allerdings habe ich keinen Einfluss auf die
Erzeugung dieser Werte. Ich muss lediglich mit ihnen weiter arbeiten.
Oliver schrieb:
> Problematisch wird dein Vorgehen auf jeden Fall, wenn schon fehlerhafte> Werte erkannt und auf 0 gesetzt wurden. Dann stimmt deine vorhandene> Vorzeichenanzahl nicht mehr mit dem, was eigentlich sein sollte,> überein.
Hab vergessen zu erwähnen, dass ich den genullten Wert nicht wieder ins
FIFO schreibe, sondern nur mit diesem weiter arbeite. Die Anzahl der
Vorzeichen wird daher nicht beeinflusst.
Oliver schrieb:
>> Ob du alleine aus der Anzahl der bisher angekommenen positiven und>> negativen Werte die Gültigleit neu angekommener Werte ableiten kannst,>> kann dir hier niemand sagen.>> Das sehe ich auch so. Allerdings habe ich keinen Einfluss auf die> Erzeugung dieser Werte. Ich muss lediglich mit ihnen weiter arbeiten.
In diesem Fall spar dir die ganze Einleserei, nimm einen
Zufallsgenerator, und erzeug dir die Werte selber. Alles andere ist
sinnlos.
Oliver
Oliver schrieb:
> In diesem Fall spar dir die ganze Einleserei, nimm einen> Zufallsgenerator, und erzeug dir die Werte selber. Alles andere ist> sinnlos.
So schlimm ist das mit den falschen Werten nun auch wieder nicht. Zu
einem großen teil kann ich ziemlich gut mit den Werten arbeiten.
Na ja, was erwartest du?
Wie sehen die Werte aus?
Gibt es irgendwelche Zusammenhänge?
Ändern sich die Werte normalerweise nur langsam?
Vielleicht wäre es einfacher, wenn du erst mal erzählst, was das für
Werte sind und wie so ein Datensatz typischerweise aussieht.
Aber Fehlerbehebung ist hinten nach schwer. Information die weg ist, ist
weg. Da kann man rechnen so viel man will. Da helfen dann nur noch
Heuristiken wie: Temperaturen ändern sich nicht sprunghaft innerhalb
1/10 Sekunde, eine Temperatur die um mehr als 10 Grad vom Wert davor und
danach abweicht ist unglaubwürdig und wird durch den Mittelwert der
beiden Nachbarwerte ersetzt, etc. Aber sowas muss man immer an die
tatsächliche konkrete Aufgabenstellung anpassen.
Das ich zu große Sprünge abfange ist klar. Wenn ich Werte bekomme wie
1 1 1 2 3 1 2 -1 -2 -1 -1 1 2 1 3 3 1 2 1 -60 -128 -128 -40 1 1 2 ...
Ich weiss das die negativen Werte falsch sind. Beim zweiten Auftreten
der negativen Werte ist das ja einfach zu erkennen, da der Sprung sehr
groß ist und ein solch großer Sprung nicht zulässig ist. Beim ersten
Auftreten der negativen Werte ist aber kein so großer Sprung vorhanden.
Es wäre theoretisch (aber nicht in der aktuellen Messung) möglich, dass
ein solcher Sprung von 1 auf -2 vorkommt.
Hallo!
Bei Vorzeichenproblemen würde ich immer stutzig werden. Da ich die
Zahlenreihe und auch den Ursprung nicht kennne, kann ich nur raten.
Kann es sein daß hier ein Typ-Problem vorliegt?
Sollten die Zahlen unsigned sein (also z.B. 0...255) und Du
interpretierst sie als signed (-128...0...127)?
Route_66 schrieb:
> Sollten die Zahlen unsigned sein (also z.B. 0...255) und Du> interpretierst sie als signed (-128...0...127)?
8-Bit Zweierkomplement bekomme ich.
Matthias schrieb:
> Das ich zu große Sprünge abfange ist klar. Wenn ich Werte bekomme wie>> 1 1 1 2 3 1 2 -1 -2 -1 -1 1 2 1 3 3 1 2 1 -60 -128 -128 -40 1 1 2 ...>> Ich weiss das die negativen Werte falsch sind.
Woher weißt du das?
> Es wäre theoretisch (aber nicht in der aktuellen Messung) möglich, dass> ein solcher Sprung von 1 auf -2 vorkommt.
Warum ist das in der aktuellen Messung nicht möglich?
Mit solchen Fragen musst du anfangen. Warum ist etwas so? Wieso weiß ich
etwas? Woher nehme ich das Wissen?
Dann kann man darüber nachdenken, diese Erkentnisse in Code zu giessen.
Die Antwort "Ich weiß es einfach" gilt allerdings nicht. Da muss sofort
die Gegenfrage kommen: Hellseherei, Eingebung oder gibt es dafür einen
rationalen Grund?
42
Ganz spontan fallen mir da ein paar Fragen ein:
Was sind das für Messwerte? Wo kommen die her? Was repräsentieren die?
Woran kann man fehlerhafte Werte erkennen? Kann man überhaupt
fehlerhafte Werte erkennen? Wie lässt sich die Erkennung fehlerhafter
Werte in Regeln abbilden?
Wodurch werden die Fehler hervorgerufen? Messfehler? Übertragungsfehler?
Rechenfehler?
Was hätten fehlerhafte Werte für eine Auswirkung auf das Ergebnis, was
du ermittelst? Was haben fehlende Werte für eine Auswirkung auf das
Ergebnis, was du ermittelst? Was machst du überhaupt mit den Daten? Was
macht dein System überhaupt? Was ist das Ziel der ganzen Übung? Ist es
nachts kälter als draussen?
Woher soll irgend jemand in der großen weiten Welt ohne jegliche weitere
Informationen diese und noch viel mehr Fragen beantworten können, wenn
du, der du alles Informationen vorliegen hast, er schon nicht kannst?
Oliver
Hi
>Es sind Positionsveränderungen. Wenn ich mich nur in positiver Richtung>bewege, dann ist eine negative Positionsveränderung falsch.
Hoffentlich nicht von einem GPS.
MfG Spess
Das nennt man dan wohl rauschen. wo das rauschen entsteht ist egal,
wenns mal auf dem signal ist, muss mann damit leben.
filtern ist der richtige ansatz.
allerdings sind die wertebereiche nicht so toll, wenns um null herum
rauscht ...
was willst du denn erreichen?
nur eine signalisation ob vorwärts oder rückwerts bewegt wird, oder mit
dem signal sogar einen regler bauen ???
schau dir mal folgenden themen an im netz:
- fir-filter
- quantisieren
gruss Claudio