Laufvariable/-index zur Erstellung unterschiedlicher Matrize
n3c4z3
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.12.2012, 12:21
Titel: Laufvariable/-index zur Erstellung unterschiedlicher Matrize
Hallo liebe MatLab-Gemeinde,
ich habe einen Code, der folgendermaßen aussieht:
Code:
zeilen_B=0;
for i=1:size(A,1) if A(i,1)==5
zeilen_B=zeilen_B+1;
end end
B=zeros(zeilen_B,9);
counter=1;
for i=1:size(A,1) if A(i,1)==5
B(counter,:)=[A(i,1),A(i,2),A(i,3),A(i,4),A(i,5),A(i,6),A(i,7),A(i,8),A(i,9),A(i,10),A(i,11),A(i,12)];
counter=counter+1;
end end
Ich lese zunächst Daten ein, die mir eine Matrix mit 55x12 Zellen "generieren". Nun möchte ich diese Matrix sortieren nach den Einträgen in der ersten Spalte und jeweils als eine eigene Matrix mit separatem Variablennamen speichern. Die erste Spalte der Ausgangsmatrix hat immer für eine gewisse Zeilenanzahl einen konstanten Wert und erhöht sich dann um 2,5. Jetzt könnte ich natürlich x dieser oben aufgeführten Codeblöcke schreiben und jeweils per Hand den Matrixnamen der zu erstellenden Matrix sowie die if-Bedingung anpassen. Jedoch produziert das eine Menge Codezeilen, die ich ganz gewiss einsparen kann, wenn ich nur wüsste wie...
Ich hoffe, mein Problem ausreichend geschildert zu haben, so dass ein gewitzter Mensch hier mir einen Lösungsvorschlag geben kann.
Mfg, n3c4z3
n3c4z3
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.12.2012, 12:38
Titel:
ohohoh, kleinen Fehler im Code.... ich muss natürlich die Spaltengrösse der Matrix B mit 12 angeben. Ist jedoch für das formulierte Problem an sich unerheblich... trotzdem natürlich auszubessern
Verfasst am: 28.12.2012, 03:58
Titel: Re: Laufvariable/-index zur Erstellung unterschiedlicher Mat
Hallo n3c4z3,
Bitte mache das nicht.
Es ist immer eine schlechte Idee, ein wohlgeordnetes Array in einen Haufen unterschiedlicher Variablen aufzuteilen, die viele unterschiedliche Namen besitzen. Wie Du merkst benötigt man dafür entweder sehr viel Code, oder das tückische EVAL. Zu diesem Stichwort findest Du viel im Forum.
Es ist aber immer effizienter, die Daten entweder im Array zu belassen und nur mit den Indizes zu arbeiten, oder ein Cell-Array zu verwenden.
Noch ein Tip:
Code:
% Statt:
B(counter,:)=[A(i,1),A(i,2),A(i,3),A(i,4),A(i,5),A(i,6),A(i,7),A(i,8),A(i,9),A(i,10),A(i,11),A(i,12)];
% Ist das hübscher:
B(counter,:) = A(i, 1:12)
werd mal sehen, ob ich trotzdessen mir meine Diagramme passend herstellen kann... und auch vielen Dank für den Tipp, das machts einfacher bzw. eleganter.
Gruß,
n3c4z3
Einstellungen und Berechtigungen
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.