next up previous contents index
Nächste Seite: 5.2 Strukturen Aufwärts: 5.1 Felder Vorherige Seite: 5.1.1 Eindimensionale Felder   Inhalt   Index


5.1.2 Mehrdimensionale Felder

Die Einträge der bisher betrachteten 1D-Felder sind im Speicher hintereinander gespeichert (Modell des linearen Speichers), z.B, wird der Zeilenvektor

$ \begin{pmatrix}x_0 & x_1 & x_2 & x_3 & x_4 \end{pmatrix}$

als
double x[5];
vereinbart und gespeichert als
\begin{center}\vbox{\input{kap512a.pstex_t}
}\end{center}

wobei jede Zelle 8 Byte lang ist.

Ein zweidimensionales (statisches) Feld, z.B., eine Matrix A mit N = 4 Zeilen und M = 3 Spalten

AN x M : = $ \begin{pmatrix}
A_{00} & A_{01} & A_{02} \\
A_{10} & A_{11} & A_{12} \\
A_{20} & A_{21} & A_{22} \\
A_{30} & A_{31} & A_{32}
\end{pmatrix}$


kann im Speicher ebenfalls nur linear gespeichert werden, d.h.,
\begin{center}\vbox{\input{kap512b.pstex_t}
}\end{center}


Daraus ergeben sich zwei Möglichkeiten der 2D-Feldvereinbarung: Beispiel: Als Beispiel betrachten wir die Multiplikation der Matrix AN x M bestehend aus N = 4 Zeilen und M = 3 Spalten mit einem Zeilenvektor  $ \underline{{u}}_{M}^{}$ der Länge M. Das Ergebnis ist ein Zeilenvektor  $ \underline{{f}}_{N}^{}$ der Länge N, d.h., $ \underline{{f}}_{N}^{}$ : = AN x M . $ \underline{{u}}_{M}^{}$ . Die Komponenten von $ \underline{{f}}$ = [f0, f1,..., fN-1]T berechnen sich zu (siehe Ex514.cc)

fi : = $\displaystyle \sum_{{j=0}}^{{M-1}}$Ai, j . uj        $\displaystyle \forall$i = 0,..., N - 1 .

Höherdimensionale Felder können analog zu Version 1 deklariert und benutzt werden. In Variante 2 muß auf ein Element B(i, j, k) eines dreidimensionalen Feldes double B[L,N,M]; mittels B[i*M*N+j*M+k] zugegriffen werden.


next up previous contents index
Nächste Seite: 5.2 Strukturen Aufwärts: 5.1 Felder Vorherige Seite: 5.1.1 Eindimensionale Felder   Inhalt   Index
Gundolf Haase 2004-01-15