22.09.2015, 21:35
Hallo,
ich bin gerade dabei ein Algorithmus in Labview umzusetzen bin jedoch ein bisschen überfordert und komme auf kein grünen Zweig.
Vielleicht ist ein erfahrener Labviewer/Programmierer hier im Forum, der mir eventuell ein Tipp geben kann.
Es geht hier um das Auffinden der bestmöglichen Positionen eines Mikrofonsensorarray in einem Koordinatensystem (x,y,z).
Schwierigkeiten habe ich besonders mit den folgenden Punkten:
10. Setze Index m auf 0;
11. Verschiebe die Position in positiver X Richtung um schrittweise s (z.b 1).
12. berechne die neue Summe der Fehlerquadrate (wird vorher im Algorithmus erklärt)
13. wiederhole schritt 11 und 12 solange bis die Summe der Fehlerquadrate nicht mehr kleiner wird (wenn sich bereits bei der ersten
Verschiebung in X-Richtung eine Verschlechterung der Summe der Fehlerquadrate ergibt muss die Schrittweite s in negativer X Richtung verschoben werden.
14. Führe Schritte 11 bis 13 für den Y Vektor aus
15. Führe Schritte 11 bis 13 für den Z Vektor aus
16. erhöhe m um 1
17. wiederhole Schritte 11 bis 16 bis m=N-1
mein Problem ist, dass die Eingangswerte den Ausgangswerten entsprechen.
Ich weiß auch warum nur kann ich grad keine Lösung dafür finden auch wenn es noch so trivial ist:
In der Schleife wird nach dem kleinsten Fehlerquadrat gesucht,
bis das kleinste Fehlerquadrat gefunden ist. Bei jedem Durchgang wird überprüft, ob das berechnete Fehlerquadrat größer ist als das vorherige,
wenn das nicht der Fall wird die Schrittweite s inkrementiert und es findet eine neue Berechnung statt. Wenn das berechnete Fehlerquadrat kleiner ist als das vorherige wird in die andere Schleife gegangen
und für die andere Richtung geschaut. Zuerst wird dekrementiert und dann wieder überprüft. Dabei entsteht ein Nulleffekt. Um das verständlich zu machen hier mal kurz ein Beispiel was passiert:
Durchgang 0:
Schrittweite s wird inkrementiert
Fehlerquadrat vorher: 1000
berechnetes Fehlerquadrat : 100
100>1000 = False
Durchgang 1:
Schrittweite s wird inkrementiert (Durchgang 0 ist False deswegen wird erneut für den neuen inkrementierten X wert eine Berechnung durchgeführt)
Fehlerquadrat vorher: 100
berechnetes Fehlerquadrat : 200
200>100 = True
Zwischendurchgang -> geht in die Schleife für andere Richtung, weil Durchgang 1 True ist
Durchgang 0:
Schrittweite s wird dekrementiert
Fehlerquadrat vorher: 200
berechnetes Fehlerquadrat : 100
100>=200 = False
Durchgang 1:
Schrittweite s wird dekrementiert und somit wieder da wo es vorher war
Fehlerquadrat vorher: 100
berechnetes Fehlerquadrat : 200
200>=100 = True
somit bleibt x wie es ist, wobei ich die Schrittweite bräuchte wo x tatsächlich am kleinsten ist.
Falls euch sonst noch was auffällt was mich danach in Schwierigkeiten bringen könnte bitte erwähnen.
Im Anhang noch ein Bild vom Algorithmus Schritte 1-17 wobei 1-9 eigentlich selbsterklärend sind und nicht
weiter notwendig sind zu erklären für mein Problem.
ich bin gerade dabei ein Algorithmus in Labview umzusetzen bin jedoch ein bisschen überfordert und komme auf kein grünen Zweig.
Vielleicht ist ein erfahrener Labviewer/Programmierer hier im Forum, der mir eventuell ein Tipp geben kann.
Es geht hier um das Auffinden der bestmöglichen Positionen eines Mikrofonsensorarray in einem Koordinatensystem (x,y,z).
Schwierigkeiten habe ich besonders mit den folgenden Punkten:
10. Setze Index m auf 0;
11. Verschiebe die Position in positiver X Richtung um schrittweise s (z.b 1).
12. berechne die neue Summe der Fehlerquadrate (wird vorher im Algorithmus erklärt)
13. wiederhole schritt 11 und 12 solange bis die Summe der Fehlerquadrate nicht mehr kleiner wird (wenn sich bereits bei der ersten
Verschiebung in X-Richtung eine Verschlechterung der Summe der Fehlerquadrate ergibt muss die Schrittweite s in negativer X Richtung verschoben werden.
14. Führe Schritte 11 bis 13 für den Y Vektor aus
15. Führe Schritte 11 bis 13 für den Z Vektor aus
16. erhöhe m um 1
17. wiederhole Schritte 11 bis 16 bis m=N-1
mein Problem ist, dass die Eingangswerte den Ausgangswerten entsprechen.
Ich weiß auch warum nur kann ich grad keine Lösung dafür finden auch wenn es noch so trivial ist:
In der Schleife wird nach dem kleinsten Fehlerquadrat gesucht,
bis das kleinste Fehlerquadrat gefunden ist. Bei jedem Durchgang wird überprüft, ob das berechnete Fehlerquadrat größer ist als das vorherige,
wenn das nicht der Fall wird die Schrittweite s inkrementiert und es findet eine neue Berechnung statt. Wenn das berechnete Fehlerquadrat kleiner ist als das vorherige wird in die andere Schleife gegangen
und für die andere Richtung geschaut. Zuerst wird dekrementiert und dann wieder überprüft. Dabei entsteht ein Nulleffekt. Um das verständlich zu machen hier mal kurz ein Beispiel was passiert:
Durchgang 0:
Schrittweite s wird inkrementiert
Fehlerquadrat vorher: 1000
berechnetes Fehlerquadrat : 100
100>1000 = False
Durchgang 1:
Schrittweite s wird inkrementiert (Durchgang 0 ist False deswegen wird erneut für den neuen inkrementierten X wert eine Berechnung durchgeführt)
Fehlerquadrat vorher: 100
berechnetes Fehlerquadrat : 200
200>100 = True
Zwischendurchgang -> geht in die Schleife für andere Richtung, weil Durchgang 1 True ist
Durchgang 0:
Schrittweite s wird dekrementiert
Fehlerquadrat vorher: 200
berechnetes Fehlerquadrat : 100
100>=200 = False
Durchgang 1:
Schrittweite s wird dekrementiert und somit wieder da wo es vorher war

Fehlerquadrat vorher: 100
berechnetes Fehlerquadrat : 200
200>=100 = True
somit bleibt x wie es ist, wobei ich die Schrittweite bräuchte wo x tatsächlich am kleinsten ist.
Falls euch sonst noch was auffällt was mich danach in Schwierigkeiten bringen könnte bitte erwähnen.
Im Anhang noch ein Bild vom Algorithmus Schritte 1-17 wobei 1-9 eigentlich selbsterklärend sind und nicht
weiter notwendig sind zu erklären für mein Problem.