LabVIEWForum.de - 2D-Array filtern

LabVIEWForum.de

Normale Version: 2D-Array filtern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe folgendes Problem:
Ich lese alle 500ms 100 Temp.Werte ein und schreibe diese in ein 10x10 2D-Array.

Nun will ich erkennen, ob ein bestimmter Temp.Wert (z.B. Zeile 3, Spalte 5) des Arrays "aus der Reihe tanzt".
Was heißt, ob ein Wert ab einer bestimmten Temperaturschwelle weiter ansteigt...und mit welchem Gradienten (Temperaturanstieg pro Zeit) er weiter ansteigt.

Ich denke dass man eine solche Anwendung mit einem digitalen Filter, wie es sie auch in LV gibt, lösen könnte.

Mein Problem ist nur, dass ich aus der Automatisierungstechnik komme und somit leider keinerlei Ahnung und Erfahrung mit digitalen Filtern habe.

Vielleicht kann mir ja jemand weiterhelfen. Vielen Dank schon im voraus.

Gruß Jürgen
Hallo Jürgen,

hier ist ein Beispiel. Du musst für Dich noch den Gradienten durch die Abtastzeit (Schleifendauer) teilen.

Setzte im Beispiel die Temmperaturschwelle auf 1, damit Du was siehst.

kpa

Lv85_img
Hallo,

vielen Dank für die schnelle Antwort. Funktioniert sehr gut so.

Leider muss ich sagen dass ich die Lösung auf diesem Weg schon selbst programmiert habe.
Ich wollte deshalb nun nochmal nach einer Lösung über Digitale Filter fragen??

Hintergrund ist, dass das ganze im Zusammenhang bei meiner Diplomarbeit gelöst werden musste, so ungefähr wie oben angegeben habe ich es auch gemacht...leider will aber nun mein Prof. eine Lösung über ein digitales Filter...er meint das müsste super gehen...
Ich habe nun schon einiges an Literatur zu digitalen Filtern gelesen, finde aber leider keinerlei Ansatz zur Lösung dieses Problems.
Deshalb habe ich hier mal gepostet in der Hoffnung dass mir jemand weiterhelfen kann...
Hiilfe...ist hier gar kein Filter-Spezialist oder mit guten DSV-Kenntnissen unterwegs der sich mein Problem nochmal anschauen könnte...

Bin für alle Anregungen und Vorschläge dankbar...Danke schon mal im voraus für etwaige Antworten!!!
Hi,

hab auch nicht so richtig die Ahnung, aber wenn Du Ausreißer kennzeichen willst, müsstest Du mit einem Hochpassfilter in 2D arbeiten können. Der betont die Kanten und damit die steigenden Flanken, wenn Du halt Ausreißer aus einer ansonsten "homogenen" Fläche hast. Wie man das in LV implementiert - sorry, keine Ahnung. Allerdings ist das ganze in der Bildbearbeitung ein sehr bekanntes Phänomen, nämlich das Scharfzeichnen - vielleicht gibt es ja da was.

Aus dem Hochpassgefilterten Array müsstest Du dann über die Maxima und die entsprechendne Indizes an Deine Werte kommen.

Wenn Du Deinen Chef beeindrucken willst: Wavelet-Filter.;)Die sind für solche Anwendungen meines Wissens sehr viel effizienter (z.B. in der Bildbearbeitung bekommt man damit extrem hohe Kompressionsraten hin) und machen gewisse Filteroperationen auch durch die entsprechende Struktur einfach. Hier sind 2D-Darstellungen glaube ich auch einfacher zu handhaben als mit "normalen" Digitalfiltern (FIR, IIR etc.). Hab mich da aber auch nur sehr, sehr kurz mit beschäftigt und es dann meinem Nachfolger überlassen, da ggf. was raus zu machen...Wink

So, das fällt mir dazu ein... Grüße,

ch
Kannst ja mal untersuchen, ob Dir das VI "Abweichende Werte entfernen" in
Mathematik/Anpassung/Kurvenanpassung
etwas nützt.
Analoge ode digitale Filter im engeren Sinne, z.B ein Glättungsfilter oder ein Hochpass, verändern alle Signalwerte und funktionieren jedenfalls nicht so, daß bestimmte Werte entfernt werden und die anderen unverändert bleiben. Will sagen: In einem VI "Suche nach Ausreissern" kann zwar ein digitales Filter durchaus eine wichtige Hilfsfunktion haben, aber für sich allein genommen wird es nicht diese Suche selbst leisten. (ich sage das nur, falls Du diese Vorstellung zu haben scheinst)

Tip: Wenn du dich statt bloßer Beschreibung dazu entschießen könntest, ein oder mehrere Beispieltabellen zu posten und darin die zu erkennenden Ausreisser markierst - ja dann werden die hilfreichen Tips von den Experten nur so gesprudelt kommen.
Danke erst mal für die Antworten...

Ich verstehe dass ihr gerne Beispiel-VIs oder Tabellen haben wollt...aber das ist etwas schwierig, da das sehr viele Tabellen wären und man an einer einzelnen Tabelle einen "Ausreißer" nicht erkennen würde.
Ich versuche also nochmal eine Beschreibung meines Problems "verbal".

Also ich lese alle halbe Sekunde ein 10x10 Array also 100 Temperaturwerte ein. Jetzt zur Definition eines sog. "Ausreißers".
Mit Ausreißer soll ein Wert aus dem Array mit seiner Zeilen - und Spalten Nummer definiert sein.
1. Ein Ausreißer hat eine Mindesttemperatur z.b. 180 °C (Soll als Variable aber einstellbar sein.)
2. Um zu einem Ausreißer zu werden, muss ein Wert über einen bestimmten Zeitraum (einstellbar), mit einem bestimmten Gradienten (einstellbar) ansteigen.

Sind diese beiden Bedingungen erfüllt, soll die entsprechende Zeilen - und Spaltennummer ausgegeben werden.

Vielleicht hilft das nochmal ein bißchen weiter.
Referenz-URLs