|
|
|
Bedingt Matrixlemente substrahieren |
|
| svensi |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.12.2011, 11:54
Titel: Bedingt Matrixlemente substrahieren
|
 |
Hallo Forum,
stehe momentan vor folgendem Problem: Habe eine Bilderserie in denen ich Spots identifiziert habe. Die Spotpositionen müssen driftbereinigt werden. Dazu habe ich eine Matrix A mit den Verschiebungen in x und y (Spalte 1 und 2) für den jeweiligen Frame (Spalte 3: Framenummer gleich Zeilennummer). In einer zweiten Matrix B habe ich die Spotpositionen (x Spalte 1, y Spalte 2, Framenummer Spalte 3). Jetzt soll für jeden Frame um die entsprechende Verschiebung korrigiert werden.
Habe versucht eine bedingte For-Schleife zunächst nur für die x-Koordinate zu programmieren, die aber nicht funkioniert (frameno ist die Zahl der Frames):
Bin noch recht neu. Wäre über jede Anregung froh.
VG sven
|
|
|
|
|
|
| Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.12.2011, 15:25
Titel: Re: Bedingt Matrixlemente substrahieren
|
 |
Hi Sven!
So wie es aussieht hast du proggen mit C gelernt oder sowas kann das sein? Vll auch Java.
Laos folgendes. Wenn ich dich richtig verstanden habe, dann musst du die jeweiligen kompletten ersten Spalten von A von B abziehen richtig?
In den Sprachen der C Familie, Pascal und Java wahrscheinlich auch, muss man jeden Punkt einzeln anfassen. Das ist hier aber nicht nötig.
Grüße!
Frag ruhig nach, wenn ich falsch liege.
|
|
|
|
| svensi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.12.2011, 10:50
Titel:
|
 |
| |
 |
|
Hallo Scriptor,
Hallo Forum,
danke für deine Antwort. Ganz so einfach ist es leider nicht. Gebe mal ein Beispiel:
In Matrix B stehen in den ersten beiden Spalten die Werte für x und y um die der jeweilige Frame (in Spalte 3) korrigiert werden muss:
0,119271297414286 1,21843889249709 1
0,421827252545654 1,72615284099976 2
0,967513179990647 1,80121670092313 3
1,25419674553774 1,73014225723369 4
2,16663356599997 1,19026407924855 5
Matrix A enthält die x und y Koordinaten der identifizierten Spots (Spalten 1 und 2) in den jeweiligen Frames (Spalten 3).
48,7644857978740 195,967762840227 1
54,1023579376152 390,108491579559 1
64,9206027345564 52,7209925228938 1
65,8733353725879 240,369775832193 1
333,675646963648 419,741218379953 2
350,353458031096 208,054438196904 2
171,444303236238 420,978068338887 3
150,842615053740 345,012684559850 4
156,504175474045 263,346615204838 4
162,100703208973 131,381161004950 4
...
Da jeder Frame unterschiedlich verschoben ist, müssen für jeden Frame andere Beträge substrahiert/addiert werden. Ebendiese stehen in Matrix A. Das Programm muss für eine variable Anzahl an Spots pro Frames und Frames insgesamt funktionieren.
Vielleicht habe ich mich in meinem ersten Post etwas undeutlich ausgedrückt. Hoffe das Problem ist jetzt klarer.
@ Scriptor: Habe keinerlei Scritsprachen gelern;-) Versuche einen Einstieg in Matlab zu bekommen. Aber die meisten Script-Konstruktionen fallen im Moment für mich noch vom Himmel.
Danke für Eure Hilfe.
VG Sven
|
|
|
|
| Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.12.2011, 11:34
Titel:
|
 |
| |
 |
|
Du wirst nicht umhinkommen die Matrizengymnastik zu erlernen. Schau dir da die Hilfen ruhig an, was dort bezüglich zur Indexierung steht.
Eine beliebige Matrix A ist folgendermaßen kodifiziert
A(erste Dimension,zweite Dimension,.....)
Mit A(5) suchst du in einem 1D Array (egal ob Spalte oder Zeile) den 5ten Wert raus und mit A(5,4), den den vierten Wert in der fünften Spalte. Das ist in den normalen Hochsprachen nicht anders.Eigentlich sehr einfach zu verstehen. Mit A(5, suchst du alle Werte in einer Spalte raus und mit A(5,3:5) den dritten bis fünften Wert. Und so gehst du in Matlab überall vor.
Ich nehme folgendes an und zwar, dass dein Array A kleiner ist als das, von Array B die Anzahl der Zeilen von A = die ANzahl der Frames. man eine For Schleife über alle Zeilen von der Zeilenanzahl von b und schaust in jedem Schleifen Durchlauf, ob die neue Framezahl in der dritten Spalte
anders ist als die vorherige(mit ==).
Den Rest kriegste hin wenn du schonmal geprogt hast.
Grüße!!
|
|
|
|
| Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 11.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.12.2011, 12:03
Titel:
|
 |
Hallo Sven,
Du hast versucht for-Schleifen und if-Abfrage
zu kombinieren. Das funktioniert nicht. Statt dessen wäre noch eine for-Schleife
über alle Elemente von A nötig:
Die Logik geht jetzt von Frames aus und zu jedem Frame gibt es eine Anzahl an Spots.
Dadurch muß jeder Spot mehrmals untersucht werden:
gehört der Spot zu Frame 1, 2, 3,..., wenn ja subtrahiere die Verschiebung.
Besser ist eine Schleife über alle Spots, das finden der Framenummer ist einfach eine
Indizierung in die Matrix B:
Grüße
Sirius
|
|
|
|
| svensi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.12.2011, 17:53
Titel:
|
 |
Danke für Eure beider Hilfe! Problem ist gelöst. Habe den zweiten Vorschlag von Sirius3 verwendet.
Glaube habe jetzt zumindest verstanden wie diese Art for-Schleifen funtkioniert. Mit den Matrizenumwandlungen war ich schon recht vertraut. Aber spezielle for-Schleifen für die jeweiligen Anwendungen zu schreiben, hab ich bis dato nicht hinbekommen. Hoffe es klappt jetzt in Zukunft besser.
Vielen Dank
VG sven
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|