Verfasst am: 10.10.2012, 20:19
Titel: Zeilen einer Matrix sortieren/ordnen für diagonale Anordnun
Hallo zusammen,
folgendes Problem bereitet mir Kopfzerbrechen.
Ich moechte eine Matrix so orden, dass alle Einträge (beliebige Zahl) auf der Hauptdiagonalen (j,j) liegen.
Dazu sollen die Zeilen getauscht/bewegt werden.
In jeder Zeile gibt es entweder einen oder keinen Eintrag.
Im Beispiel sollte:
Zeile1 in Zeile2
Zeile2 in Zeile3
Zeile3 in Zeile4
Zeile4 in Zeile1
verschoben werden.
Folgendes habe ich schon versucht. Der Code klappt immer dann nicht, wenn eine Zeile nach "oben" getauscht wird und diese Zeile noch nicht am richtigen Platz ist.
Wenn ich die Schleife mehrmals wiederhole, kommt irgendwann das richtige Ergebnis.
Über Anregungen zur Verbesserung, gerne auch mit neuem Ansatz, wäre ich sehr dankbar!
Hoffe mir kann jemand helfen =)
Grüße
Code:
for i=1:n %Schleife über Knotenanzahl (n=7 im Bsp)
j=find(C_Ausgang(i,:)~=0); % "an welcher Spaltennummer/Knoten ist ein Eintrag ungleich Null" if j~=i %entspricht dem Fall, dass Eintrag nicht auf Diagonale liegt.
C_Ausgang([i,j],:) = C_Ausgang([j,i],:);
P([i,j],:) = P([j,i],:);
end end
for i=1:n %Schleife über Knotenanzahl (n=7 im Bsp)
j=find(C_Ausgang(:,i)~=0); % "an welcher Zeile ist ein Eintrag ungleich Null, dieser gehört in die i-te zeile if j~=i %entspricht dem Fall, dass Eintrag nicht auf Diagonale liegt.
C_Ausgang([i,j],:) = C_Ausgang([j,i],:);
P([i,j],:) = P([j,i],:);
end end
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.