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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage