[Matlab] Bedingung auf Matrix und Indexposition merken

Loopo

Admiral
Registriert
Juli 2002
Beiträge
7.617
Code:
A = rand(10);
B = A > 0.5;
C = A(B);
Mit diesem Beispiel-Code erhalte ich in C alle Werte aus A, welche größer als 0.5 sind. Das Problem ist, dass ich in C nicht mehr weiß, welche Position die Elemente in A hatten. Jedoch muss ich die wissen, um weiter arbeiten zu können. Wie kriege ich also die Index-Positionen da mitgespeichert?
 
Ich weiß nicht ob du alle Werte > 0.5 unbedingt in einem Vektor brauchst, bzw. was du danach damit anstellen willst.
Sonst vielleicht

Code:
A = rand(10);
B = A > 0.5;
C = A .* B;
 
Sinn und Zweck ist es, das der Code nicht in einer Schleife die komplette Matrix durchlaufen muss und so den Code schneller zu gestalten. So wie du es gemacht hast, habe ich halt immer noch die gesamte Matrix vor mir liegen.
 
Hab grad mal was in Octave versucht

Code:
A = rand(10);
B = A > 0.5;
C = A .* B;
D = C(B);
E = find(C);

Dann hast du in D alle deine Elemente > 0.5 in einem Vektor und in E dann die entsprechenden linearisierten Indizes (column first).

Vll hilft dir auch
Code:
sparse(C)
weiter...
 
Zuletzt bearbeitet: (C und D vertauscht)
Bei sparse() habe ich aber auch keine Möglichkeit gefunden, die Positionen der Elemente abzurufen (gespeichert sind sie ja wo)... :freak:
 
Aber der andere Ansatz sollte dir doch helfen. Oder hab ich dich falsch verstanden? Oder geht das nur in Octave...
 
Zurück
Oben