ich habe folgendes Problem. Ich habe eine Lösungs-Matrix mit mehr als 100000 Zeilen und 4 Spalten mit dem Namen Loesungs. In der 4. Spalte stehen ausschließlich ganze positive Zahlen im Bereich von größer Null bis ca 40.
Ich möchte jetzt in einer Schleife schauen welcher Wert in der j-ten Zeile in der 4-ten Spalte steht. Dabei soll er bei Zeile Eins beginnen und alle Zeilen durchlaufen. Dann soll er die ganze Zeile in eine Matrix schreiben die Loesungsx heißt. Z.B. in der ersten Zeile 1 Spalte 4 steht eine 2. das heißt er erzeugt mir eine Lösungsmatrix die Loesungs2 heißt und schreibt die komplette Zeile in die neue Matrix. Alle weiteren Zeilen bei denen in der 4-ten Spalte eine 2 steht, sollen ebenfalls in diese Matrix geschrieben werden. Die Bezeichnung der Matrizzen soll dabei automatisch erfolgen. (4 Spalte eine 5 soll in Loesungs5 geschrieben werde, 4 Spalte eine 8 soll in Loesungs8 , Ich habe zur automatischen oder auch fortlaufenden Nummerierung 10 Beiträge hier im Forum gefunden, jedoch es mit dieser Hilfe nicht hinbekommen. Bisher habe ich einen recht umfangreichen Code der jedoch fest ist (wenn ich nur Zahlen von 1-15 drin stehen sollte er auch nur 15 Matrizzen erzeugen und nicht das er immer 40 Lösungsmatrizzen erstellt. Ich sitze seit Tagen an dem Problem und hoffe Ihr könnt mir helfen.
Mit freundlichen Grüßen
Maik
Mein Beispielcode der leider nicht funtioniert
Code:
for j = 1:1:Zeilenanzahl; % Durchläuft alle Zeilen der Lösungsmatrix
%lösung der startwerte
for ind=1:1:40 [Loesungs,int2str(ind)](j,:)=[];
if Loesungs(ind),(j,4)==1;
Loesungs(ind)=Loesungs(j,:);
end end end
Du solltest anstelle von 40 Einzelwerten ein Cellarray mit allen 40 Lösungen verwenden, das ist syntaktisch deutlich einfacher.
Außerdem scheinst du auf den Eingabewerten zu arbeiten und in die gleiche Variable die Ausgabe zu schreiben, mag möglich sein ist aber bestimmt nicht einfach.
Code:
for wert=1:40
zeilen=find(Loesungs(:,4)==wert); %identifiziere alle Zeilen die in der 4. Spalte "wert" stehen haben
Loesung_sortiert{wert}=M(zeilen,:);
end
An deine Lösungen kommst du jetzt mit:
Loesung_sortiert{1}
Loesung_sortiert{2}
...
Maik aus Magdeburg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.10.2012, 09:51
Titel:
Vielen Dank dmjr,
so ist die Sortierung wesentlich schneller als vorher, da ich auch einige Arbeitsschritte spare.
Wie ist das dann jetzt beim plotten. Muss ich die einzelnen Zellen jetzt wieder in Matrizzen umwandeln oder geht das auch so. Mein Code den ich hier aus dem Forum für mich umgeschrieben habe gibt mir nur eine Ebene einer 3D-punktwolke aus.
Code:
farbe=hsv(20);
for It=1:20
zeilen=find(Loesungs(:,4)==It); %identifiziere alle Zeilen die in der 4. Spalte "wert" stehen haben
Loesungsort{It}=Loesungs(zeilen,:);
end hold on
for wert = 1:20 plot3(Loesungsort{wert}(:,1),Loesungsort{wert}(:,2),Loesungsort{wert}(:,3),'.','color',farbe(wert,:)); % plotten der Datenreihen 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.