Helmert Transformation < Matlab < Mathe-Software < Mathe < Vorhilfe
|
| Aufgabe | [Externes Bild http://www.bilder-space.de/show.php?file=26.11NeIolLmGgr0cSq5.jpg]
[Externes Bild http://www.bilder-space.de/show.php?file=26.11gEXgX64wYTNkmSq.jpg] |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Also habe ein Problem bei Schritt 3.
Hier ist mal der Code:
| 1: |
| | 2: | fid = fopen('Identpunkt.txt');
| | 3: | C = textscan(fid, '%s%f32%f32%f32%f32');
| | 4: | fclose(fid);
| | 5: | %1. Schritt: Übergang auf den schwerpunkt der identischen Punkte (numerisch
| | 6: | %günstig)
| | 7: | Ys = mean(C{4})
| | 8: | Xs = mean(C{5})
| | 9: | etas = mean(C{2})
| | 10: | xis = mean(C{3})
| | 11: |
| | 12: | delta_Yi = C{4} - Ys
| | 13: | delta_Xi = C{5} - Xs
| | 14: | delta_etai = C{2} - etas
| | 15: | delta_xii = C{3} - xis
| | 16: | sum(delta_Yi) == sum(delta_Xi) == sum(delta_etai) == sum(delta_xii) == 0
| | 17: |
| | 18: |
| | 19: | %2. Schritt: Berechnung der Trafoparameter aus den identischen Punkten
| | 20: |
| | 21: | a = (sum(delta_xii.*delta_Xi) + sum(delta_etai.*delta_Yi)) / (sum((delta_xii).^2 + (delta_etai).^2))
| | 22: | o = (sum(delta_xii.*delta_Yi) + sum(delta_etai.*delta_Xi)) / (sum((delta_xii).^2 + (delta_etai).^2))
| | 23: |
| | 24: | q = sqrt(o^2 + a^2)
| | 25: |
| | 26: | Y0 = Ys - o * xis - a * etas
| | 27: | X0 = Xs - a * xis + o * etas
| | 28: |
| | 29: |
| | 30: | %3. Schritt: Transformation der Neupunkte
| | 31: |
| | 32: | fid = fopen('Neupunkt.txt');
| | 33: | D = textscan(fid, '%s%f32%f32');
| | 34: | fclose(fid);
| | 35: |
| | 36: |
| | 37: | l = length(D{2});
| | 38: | for i=1:l
| | 39: | n = [Y0;X0] + ([a o;-o a]*[D{2}(i);D{3}(i)])
| | 40: | end
|
Also wie gesagt im dritten Schritt hab ich das Problem. Die Formel findet ihr am 2. Bild. Laut Formel müssten dann die jeweiligen Y und X Werte in einem Vektor ausgegeben werden. Und diese Werte muss ich dann wieder in die Datei "Neupunkt.txt" schreiben.
Habe es hier mit einer for-Schleife gelöst. Das einzige Problem ist, dass die errechneten Werte dann immer wieder als "n" gespeichert werden. Kann mir vll. da jemand helfen. Danke schonmal im vorraus
|
|
| |
|
| Status: |
(Mitteilung) Reaktion unnötig | | Datum: | 16:20 Sa 13.12.2008 | | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|