Ich stolperte über ein unerwartetes Verhalten des Additionsoperators.Was soll (1 mal n) plus (n mal 1) Operation aufgerufen werden?
a=[1 2 3];
b=[5; 7; 11];
a+b
Produziert
ans =
6 7 8 % a(1)+b(1) a(1)+b(2) a(1)+b(3)
8 9 10 % a(2)+b(1) a(2)+b(2) a(2)+b(3)
12 13 14 % a(3)+b(1) a(3)+b(2) a(3)+b(3)
Dieses Verhalten fällt wahrscheinlich unter dem Add a Vector to a Matrix Beispiel in der Dokumentation.
Erstellen Sie ein Array, A, und fügen Sie einen Spaltenvektor hinzu. Der Vektor wird so behandelt, obwohl es sich um eine Matrix mit der gleichen Größe wie A ist, so dass jedes Element in dem Vektor einer Zeile in A. hinzugefügt wird
Obwohl b
in meinem Beispiel kann nicht so behandelt werden, die gleiche Größe wie a
. Beide Vektoren müssen dupliziert werden.
Was kann ich dieses Verhalten nennen, wenn ich es anderen schildere? Keine der Definitionen von Matrix Addition passen. Vector addition hat auch eine andere Definition. Das Beste, was mir einfiel, war die "Summe der Elemente im kartesischen Produkt".
Ich denke, bsxfun ist, wo ich aussehen würde, wenn ich dieses Verhalten wollte und ich wusste nicht, dass es existiert. Aber es ist überhaupt kein intuitiver Ort, um zu schauen, wenn Sie über das Verhalten stolpern und versuchen, es zu erklären. : P – Cecilia
Auch implizite Erweiterung ... hier ist ein Blog-Post von Mathworks https://blogs.mathworks.com/loren/2016/11/10/more_thoughts_about_implicit_expansion/ – beaker
Ups, hier ist das Original. http://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/ – beaker