Verfasst am: 05.10.2009, 15:20
Titel: Zeilen aus Matrix löschen
Hallo Leute,
eigentlich ein ganz einfaches Anwendungsbeispiel:
Aus der Matrix B (Auszug eines Beispiels)
x0 x1 x2 x3 x4
1 1.5 2 1 23
1 1.5 2 2 15
1 1.5 2 3 7
1 1.5 3 1 7
1 1.5 3 2 5
1 1.5 3 3 4
1 1.5 4 1 2
1 1.5 4 2 34
1 1.5 4 3 8
Matrix C
1 1.5 4 2 34
Aus eine großen Matrix A [250 x 5] möchte ich mir erstens alle Zeilen in einer Matrix B ausgeben lassen die das Kriterium x0=1 sowie x1= 1.5 erfüllen. Danach ergibt sich obige Matrix B.
Danach soll jetzt die Zeile herausgesucht werden für die x3 Maximal (oder auch Minimal) ist. Diese Zeile soll in einer Matrix C abgespeichert werden. Danach beginnt alles mit einer neuen Wertematrix A von Vorna an. Die wiederum ermittelte Zeile mit dem maximalen x3 soll ebenfalls in C eingetragen werden.
Hoffe mein Probelm ist einigermaßer veständlich formuliert. Über schnelle Antwort würde ich mcih sehr freuen.
Grüße
Zur Lösung des ersten Probelms dachte ich an:
B(find(A(:,2)==1.5,=[];
klappt aber nicht
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.10.2009, 15:34
Titel:
... hier nochmal die Matritzen in übersichtlicher Form ...
Warum funktioniert deins nicht? Fehlermeldung(wenn ja, welche?) oder falsches Ergebnis?
...ist jetzt nur mal so aus dem Kopf heraus, ohne es ausprobiert zu haben:
Es ist natürlich x4 für das ein Maximum gesucht werden soll!
Die "große" Matrix A ist ein importiertes file.
Werde mir gleich aml alle Lösungsvorschläge anschauen und ein bischen herumprobieren. Melde mich nochmal ob ich alles so gelöst bekommen habe wie gewollt. Dann kann jmd. den thread auch als "mit Vorschlag" titulieren
Grüße aus Dresden
Ingmar
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.10.2009, 08:20
Titel:
Hallo Leute,
eine Frage noch, wenn ich meine Matrix A nach 2 Kriterien gleichzeitig absuchen will, könnte ich das dann so machen?
B= A( [A(:,4)==5, A(:,5)==10], : );
Nur die Zeilen in denen die Kriterien Spalte 4 = 5 sowie Spalte 5 =10 sollen ausgelesen werden.
Alternativ sehe ich nur die Möglichkeit das so zu machen
Habe eine Spalte in der Matrix A die ich gerne aus Vergleichsgründen abrunden möchte.
Es handle sich z.B. um Spalte 3 der Matrix A die z.B. 0.997 beinhaltet. Diese möchte ich auf die 1. Kommastelle runden.
Dazu benutze ich derzeit in einer Schleife:
mit
disp(num2str(A(k,3),'%7.1f'));
bekomme ich die Zahlen auch angezeigt und gerundet aber wie müsste der code aussehen wenn ich die gerundeten Ergebnisse direkt in A(k,3) eintragen will?
if nargin<2
anz_stell = 0;
end if nargin<1 error('Wrong number of input arguments');
end % komma multiplikator
kom = 10^anz_stell;
A = round(A * kom)/ kom;
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.