[MATLAB] Schleife Vektorisieren

nico525

Ensign
Registriert
Feb. 2009
Beiträge
185
Hallo,

ich arbeite jetzt seit ca 2 Wochen mit MATLAB und irgendwie wurde das Programm immer träger. Bis ich dann irgendwann herausgefunden habe, dass MATLAB wohl gar nicht so gut mit Schleifen kann... Und davon hab ich leider einige.
Könnt ihr mir Tipps geben wie man beim Vektorisieren vorgehen sollte? Irgendwie habe ich keinen Peil wie ich da anfangen soll.

Meine am langsamste Schleife iteriert momentan über eine Bildmatrix und führt dann Operationen abhängig von der Position des Pixels und einer weiteren Position, sowie dem Gradient des Bildes aus, also in etwa so
Code:
for x=1:size(gX,2)
        for y=1:size(gY,1)
            distance = ([x-t(1) y-t(2)]);
            distance = distance/(norm(distance));
            grad = [gX(yi,xi) gY(yi,xi)];
            d = max(0, dot(grad, distance));
            obj = obj +d^2;
        end
end
Wie beschleunige ich dies nun am geschicktesten?

Ich hoffe ihr könnt mir helfen :)
 
Bist du dir sicher das für diese Operation die du da selbst implementierst nicht eine schon von Matlab vorgefertigte Funktion vorhanden ist?

Grade was Bildbearbeitung angeht ist Matlab ja ziemlich mächtig.
 
Gefunden hatte ich jetzt spontan in der ImageToolbox nichts...


Dass ich in MATLAB elementweise multiplizieren kann weiß ich, allerdings bin ich irgendwie zu doof die entsprechenden Matrizen zu erzeugen, glaube ich^^
 
Wenn du das was du machst in Worte formulierst und danach googlest findest du keinen Lösungsansatz? So hab ich meistens alle Matlab Probleme gelöst.

Wenn du das Bild einließt hast du es ja schon in einer Matrize.
 
Nunja, nach mehreren Versuchen und viel Probieren habe ich es geschafft die innere Schleife zu entfernen. Mal sehen ob ich es schaffe die übergeordnete zu entfernen...
 
Zurück
Oben