Angenommen, ich habe eine Funktion auf diese Weise definiert:Wie können Sie zusätzliche (statische) Eingabeargumente zu einer referenzierten Funktion in mapslices hinzufügen?
function InCylinder(cpt1, cpt2, radius, pt)
# return if pt is inside cylinder defined by cpt1,cpt2,radius
end
Ich möchte diese Funktion, um alle Punkte in einer Matrix wie folgt anzuwenden:
testM = rand(3,100)
Ich fand, dass ich technisch nutzen könnten Funktion namens mapslices
meine Punkte von der Matrix an die Funktion übergeben. Das sollte in etwa so aussehen:
mapslices(InCylinder,testM,1)
Wie Sie sich vorstellen können, funktioniert dies nicht, da InCylinder
viele mehr (statisch) Eingabewerte erfordert. Ich würde es gerne vermeiden, diese in die Matrix zu kopieren, vorausgesetzt, dass sich , cpt2
und radius
nicht für alle pt
in testM
ändern.
Wie kann ich passieren cpt1
, cpt2
und radius
in InCylinder
ohne zu viel Redundanz?
PS: Ich weiß, über die Matrix zu iterieren ist eine Option, aber das beantwortet meine Frage nicht.
Jede Idee, wenn dies der effizienteste Weg ist? Ich lese anonyme Funktionen sind ziemlich langsam - sollte ich versuchen, nur die ganze Matrix statt einzelne Punkte in diese Funktion zu übergeben? – Chris
Ich glaube nicht, dass Sie einen großen Leistungseinbruch bemerken sollten, aber Benchmarks sind die einzige Möglichkeit, die Sie wirklich kennen können. Auch auf etwas, auf das man sich freuen kann, haben auf Julia 0.5 anonyme Funktionen keine Leistung mehr. – spencerlyon2