2016-11-14 2 views
0

Ich schreibe Code für Loop-lose geometrische Bild Transformation mit bilinearer Interpolation mit MeshGrids. Was ich versuche zu erreichen, ist im letzten Schritt so etwas:Wie werden 2D-Matrixzeilen als Indizes und Funktionsargumente verwendet?

image(column1 of A , column2 of A)=func (rows of nx3 matrix B as arg); 

angenommen A = [1 2; 3 4; 5 6] und B = [1 1 1; 2 3 1; 4 5 1], so dass dies passieren sollte:

image (1,2)=func ([1 1 1]); 
image (3,4)=func ([2 3 1]); 
image (5,6)=func ([4 5 1]); 

ohne Verwendung einer Schleife. Vorschläge werden geschätzt.

+2

Warum ändern Sie nicht die Funktion? wie 'image = func (A, B)'? – obchardon

+2

Sie sollten Ihren Code so umstrukturieren, dass 'func'' image', 'A' und die Gesamtheit von' B' akzeptiert und das modifizierte Bild ausgibt. Wenn Sie darauf bestehen, 'func' in jeder Zeile einzeln aufzurufen, sehe ich nicht, wie es ohne eine implizite (d. H.' Arrayfun') oder explizite Schleife gemacht werden kann. Unabhängig davon sollten Sie eine [mcve] angeben - fügen Sie bitte ein Beispiel 'image' (sowohl Eingabe als auch Ausgabe) ein. Ich vermute, dass dein 'func' vektorisiert werden kann, aber deine Frage ist zu abstrakt, um es wirklich zu erzählen. –

Antwort

0

Wenn die Funktion vektorisiert ist einfach:

image(sub2ind(SizeofImage,A))=func(B); 
Verwandte Themen