Manfred: Mehrdimensionales Array (Matrix) als Vektor speichern?

Hallo Leute,

ich bin gerade dabei einen Gleichungslöser für lineare Gleichungssysteme mit n Unbekannten zu schreiben. Der Lösungsalgorithmus wird dabei die Gauß-Elimination mit Pivotisierung verwendet. Zum Glück habe ich bereits einen Basisquelltext [http://www.mathworks.com/matlabcentral/fileexchange/45415-gaussian-elimination-with-pivoting-method] gefunden, an dem ich mich festhalten kann.

Mein Problem ist nun, dass ich das Ding in eine Programmierumgebung (die hier das Backend eines FE-Programms darstellt) packen muss, welche "nur" eindimensionale Arrays (Arrayindex läuft von 1 weg), also Vektoren, als Feldvariablen kennt.

Eine Matrix der Form: A = [a11, a12, a13; a21, a22, a23; a31, a32, a33] speichere ich folgendermaßen in einen Vektor: B = [a11, a12, a13, a21, a22, a23, a31, a32, a33].

Nun bin ich auf der Suche, nach einer "Formel", mit der ich jedes Element des Vektors ansprechen kann, wenn ich Zeilen- und Spaltenindex der Matrix vorgebe.

z.B.:

Matrixelement 1,1 entspricht Vektorelement 1
Matrixelement 2,1 entspricht Vektorelement 4
Matrixelement 3,2 entspricht Vektorelement 8

usw.

Hier möchte ich nun für Element 2,1 "nur" 2 und 1 eingeben müssen, um 4 zu erhalten. Oder 3 und 2 um 8 zu erhalten etc. ...

Anders scheint mir das geschilderte Problem nicht handelbar.

Hat jemand ein paar Ideen/Vorschläge/Lösungsmöglichkeiten für mich? Ich wäre euch darüber dankbar!

Lieben Gruß aus Österreich,
  Manfred

  1. Hallo Manfred,

    2D-Array: i: 0...n; j: 0...m

    1D Array: Index = i*m + j oder j*n + i

    Gruß, Jürgen

    1. Hallo,

      2D-Array: i: 0...n; j: 0...m

      1D Array: Index = i*m + j oder j*n + i

      und wenn du bei 1 mit dem Zählen anfängst (eher unüblich)

      Index = (i-1)*m + (j-1) + 1 oder ...

      Gruß, Jürgen

      1. Hallo,

        2D-Array: i: 0...n; j: 0...m

        1D Array: Index = i*m + j oder j*n + i

        und wenn du bei 1 mit dem Zählen anfängst (eher unüblich)

        Index = (i-1)*m + (j-1) + 1 oder ...

        Gruß, Jürgen

        Hallo Jürgen,

        vielen, vielen lieben Dank. - Das hilft mir viel weiter!

        Lieben Gruß,
          Manfred

  2. guck mal hier ungefähr in der Mitte (Zweidimensionale Arrays), da gehts um eine solche Transformation.

    MfG

  3. Hi Manfred,

    ich nutze gerne das JSON-Format. Das kann x-dimensional sein.
    Ist sehr leicht handle und transportierbar.

    einfach in Php, JS, etc:
        JSON-string --> in Array
    und umgekehrt

    Viele Grüße aus LA

    --
    ralphi