Matrix Bereichsoperator in Matlab



  • Hallo zusammen
    In Matlab kann ich ja problemlos auf Bereiche einer Matrix zugreifen, bspw.
    A = [1:10;2:11];
    B = A(1:5);

    Soweit so gut 😉 Aber was wenn ich nicht nur zeilenweise indexieren möchte sondern spaltenweise? Gut dass könne ich ja noch umschreiben mit:

    B = A'(1:5);

    Aber was wenn ich ich zweidimensional auf A zugreifen möchte? Ich möchte bspw. 1-4 Spalten der 2-5 Zeile in die Matrix B speichern?

    Mfg Samuel



  • Also mal langsam. Deine Matrix A ist ein Zeilenvektor, aber nehmen wir mal an, du hättest A = [1:10; 2:11] gemeint, also eine Matrix mit 2 Zeilen und 10 Spalten.

    Dann ist A(1:5) eine eindimensionale, d.h. lineare Indizierung. Ich glaub das geht wie in Fortran, Zeilen zuerst, d.h. du indizierst die Elemente mit den Indizes (1,1), (2,1), (1,2), (2,2), (1,3). Normalerweise indiziert man die Dimensionen bei der Zeile beginnend: A(2,5) ist das Element in der 2. Zeile, 5. Spalte. Bereiche sind da auch erlaubt, s.u.

    A'(1:5) ist meines Wissens keine erlaubte Syntax.

    Aber was wenn ich ich zweidimensional auf A zugreifen möchte? Ich möchte bspw. 1-4 Spalten der 2-5 Zeile in die Matrix B speichern?

    B = A(2:5, 1:4)



  • Hallo Bashar

    B = A(2:5, 1:4)

    Nimmt das nicht einfach aus der 1. Zeile Spalten 2 bis 5 und aus der 2. Zeile Spalten 1 bis 4?

    Stell dir eine Matrix als Bild vor. Ich möchte daraus ein Rechteck herausschneiden 😉



  • Ishildur schrieb:

    Nimmt das nicht einfach aus der 1. Zeile Spalten 2 bis 5 und aus der 2. Zeile Spalten 1 bis 4?

    Nein, das musst du lesen als: nimm den Bereich mit den x-Koordinaten zwischen 2 und 5 und den Y-Koordinaten 1 bis 4



  • Ach so geht das, danke vielmals!
    🙂



  • Die Grenzen sind sogar optional:

    B = A(2:3, : );

    ist dasselbe wie

    B = A(2:3,1:end);

    also Zeilen 2-3 rausholen und alle Spalten beibehalten. Mit end kann man sogar rechnen:

    C = A(2:end-1 , 2:end-1);

    (Eine Zeile/Spalte Rand wegschneiden)



  • Hallo, hab eine ähnliche Aufgabenstellung. Allerding möchte ich einen Bereich von einem Bild/Matrix befreien. Jemand eine Idee?


  • Mod

    Robmann schrieb:

    Jemand eine Idee?

    Neuen Thread aufmachen. Genaue Problembeschreibung abgeben (was willst du genau erreichen, womit genau hast du Schwierigkeiten, konkrete Fragestellungen). Nicht anderer Leute Zeit damit verschwenden, dass sie erst einen fünft Jahre alten Thread durchlesen sollen und dann auch noch raten müssen, inwiefern das für deine Frage relevant ist. Denn dann hat niemand mehr Lust, dir zu helfen, wenn er damit fertig ist.


Anmelden zum Antworten