Gibt es eine "fertige Funktion" die mir das Aufteilen einer Matrix ermöglicht? Oder muss man über eine for Schleife jedes Element auslesen? Später habe ich eine größere Matrix 950x950, da macht sich bestimmt eine for Schleife schlecht wegen der zeitlichen Dauer oder?
Ich möchte die Matrix dann vierteln oder achteln, also immer in gleich große "Stücke".
Wie sollte man die gesplitteten Matrizen am besten deklarieren?
Hallo Jan,
danke für deine Antwort... Das war genau die Funktion die ich gesucht habe. mat2cel funktioniert wunderbar. Jetzt würde ich aber noch gerne die mat2cel Funktion auf meinen folgenden Code anpassen.
Code:
teiler = 2% gewünschter Teiler der Matrix 1 ... n
A=magic(950); % die folgende Schleife, da meine Matrix nicht ganz quadratisch ist
topo_size_min=min(size(A));
topo_teillaenge=topo_size_min/teiler;
if topo_teillaenge == round(topo_teillaenge) % disp('teiler ergibt ganze Zahl'); else % disp('teiler ergibt keine ganze Zahl'); while topo_teillaenge ~= round(topo_teillaenge)
topo_size_min=topo_size_min-1;
topo_teillaenge=topo_size_min/teiler;
end end
Das Problem ist nun, dass die Länge und Anzahl der "Teilmatrizen" von dem Teiler der "Orginalmatrix" abhängig ist.
Wie kann ich dieses Vorhaben realisieren? Ohne von Hand die Anzahl der teil Matrizen in mat3cel einzutragen?
Code:
C = mat2cell(topo_equal, [topo_teillaenge, topo_teillaenge], [topo_teillaenge, topo_teillaenge]);
ich bin etwas ungeduldig und habe den code noch mal als funktionierendes Bsp. angefügt. Mein Problem sind die quadratisch wachsenden mat2cell Matritzen. Gibt es eine Möglichkeit, diesen Aufwand von einer Schleife erledigen zu lassen? Die subplots sind ab einer gewissen Anzahl an Teilungen eh nicht mehr sinnvoll darstellbar, aber die mat2cell Matritzen wären zur auswertung wichtig.
teiler = 3; % der Teiler soll A quadratisch teilen, n=2,3,4,...
A = magic(950);
A_len=min(size(A));
C_len=A_len/teiler;
% suche die größte teilbare laenge der Teilmatrix if C_len == round(C_len) disp('Laenge ergibt ganze Zahl');
else disp('Laenge ergibt keine ganze Zahl');
while C_len ~= round(C_len)
A_len=A_len-1;
C_len=A_len/teiler;
end end
% erstelle die größte teilbare quadratische Matrix
C_A=A(1:A_len,1:A_len);
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.