Eine weitere Möglichkeit zur Fliese ist und auf einmal tun es. Dazu haben Sie viele Möglichkeiten, je nach Argument Größe oder Speicherbeschränkungen oder anstelle Überschreiben Freiheit usw.
Eine Möglichkeit, ein Array bietet eine äußere nachzubilden Produkt
(auch dyadische oder 1-Rang so weiter genannt)
Also, wenn Sie führen Sie die folgende Multiplikation:
[1]
[1]
[1] * [a b c ... ]
[1]
[1]
das Ergebnis ist ein Rang 1-Matrix mit gleichen Zeilen
[a b c ... ]
[a b c ... ]
[a b c ... ]
[a b c ... ]
[a b c ... ]
der gleichen etwas, was Sie mit der Matlab-Funktion repmat
tun können, die ein Array in einer viel allgemeineren Weise wiederholt und intern auf bsxfun
beruht. Hier genügt eine einfache Version.
# repmat(A,number of repetitions vertically,number of repetitions horizontally)
repmat([a b c ...]',1,n)
gibt wieder das gleiche für sagen n=4
[a a a a]
[b b b b]
[c c c c]
.
.
.
auch können Sie kron
verwenden, die die Kronecker-Produkt über meshgrid
und damit im Wesentlichen 2D (in aller Kürze Fliese das zweite Argument mit jeder Platte durchgeführt wird multipliziert mit dem Element des ersten Arguments)
kron([1;1;1;1;1],[a b c d e])
was das gleiche Ergebnis mit der Tanne ergibt st Argument. Jetzt können Sie sehen, dass abhängig von der Größe des Arguments oder der Menge der temporären Arrays, die erstellt werden, Sie einen Cocktail dieser Methoden haben können, obwohl sie die gleichen Operationen ausführen.Beispielsweise; zwei gleichwertige Befehle, die intern unterscheiden sind
C = ones(length(B),1)*A + repmat(B',1,length(A));
und
C = kron(ones(length(B),1),A) + kron(ones(1,length(A)),B')
daher abhängig von der Größe von A und B Sie von diesen Alternativen profitieren könnten, sollten Sie verlangen, dass viel von hohen Leistung. So kann die Hälfte der Operation in einer Richtung und die andere in einer anderen durchgeführt werden. Es ist eher eine Kunst als die Wissenschaft. Bei diesen Größen sind sie jedoch eher kleine Unterschiede.
Was ist Ihre erwartete Ausgabe? – Yvon