Wie kann ich die Größe einer matrix in MATLAB?
Angenommen, ich hatte ein 1-von-12 matrix und ich wollte, um Ihre Größe zu einem 4-für-3 matrix. Wie könnte ich dies tun?
Meine aktuelle Lösung ist sowas von hässlich:
for n = 1:(length(mat)/3)
out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) );
end
Gibt es einen besseren Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
reshape
ist natürlich die richtige Lösung, wie bereits von @gnovice.Ein nettes feature von
reshape
ist, dass es ermöglicht diese:Also, wenn Sie nicht wissen, wie viele Spalten es sein wird,
reshape
berechnen es für Sie. Ebensoreshape
füllen wird die Anzahl der Zeilen, wenn Sie verlassen, dass aus.Versuchen die UMFORMEN Funktion:
Beachten Sie, dass die matrix B wird gefüllt mit Elementen aus Eine in einem columnwise Mode (d.h. Spalten werden gefüllt von oben nach unten bewegen Links nach rechts).
Beispiel:
A = 1:11; B = zeros(4,3); B(1:numel(A)) = A;
B
columnwise. Wenn Sie möchten, füllen rowwise, ich würde dies tun:A = 1:11; B = zeros(3,4); B(1:numel(A)) = A; B = B.';
erweitern gnovice Lösung:
Wenn Sie eine andere Reihenfolge der matrix-Konstruktion, verwenden Sie transpose (der Betreiber) oder
permutiert()
ändern Sie die dimension der Bestellung, nachdem Sie Sie aufgerufen habenreshape()
.