Wird bsxfun wirklich elementweise angewendet?
Angenommen, ich habe die folgende Funktion:
function x = printAndKeepX(x, y)
x
y
end
und ich rufe anbsxfun
wie so:
bsxfun(@printAndKeepX, 1:4, 1);
Wurdenbsxfun
wirklich Element für Element, würde ich erwartenprintAndKeepX
4 mal mit den Argumenten aufgerufen werden(x, y)
Sein(1, 1)
, (2, 1)
, (3, 1)
und(4, 1)
, beziehungsweise. Aber die Ausgabe zeigt, dass es nur einmal mit aufgerufen wird(x, y)
Sein([1 2 3 4], 1)
:
x =
1 2 3 4
y =
1
Warum? Woher kann ich wissen, was als "Element" angesehen wird?
Bearbeiten:
Die Dokumentation schlägt vor, dass die aufgerufene Funktion manchmal zwei Skalare und manchmal einen Vektor / eine Matrix und einen Skalar empfangen kann. Kann ich sicher sein, welche davon passieren wird?
Ich interessiere mich sowohl für die reguläre als auch für die GPU-Version vonbsxfun
.